27 messaggi dal 06 settembre 2002
Sto impazzendo, aiutatemi per favore!

Ho due file uno.asp e due.asp
nel file uno.asp inserisco solo funzioni e sub da richiamare (da due.asp) e soprattutto vorrei inserire una sub per la connessione ad un database così:

in uno.asp

<code>
Sub ConnessioneDB (db, sSQL, pwd)
archivio=MioPATH & TRIM(db) & ".mdb"
path=Server.MapPath(archivio)

Set Conn=Server.CreateObject("ADODB.Connection")
IF pwd="NOPWD" THEN
Conn.Open "driver={Microsoft Access Driver (*.mdb)}; dbq=" & path & "; Password=" & pwd
ELSE
Conn.Open "driver={Microsoft Access Driver (*.mdb)}; dbq=" & path
END IF

SET rst=Server.CreateObject("ADODB.RecordSet")
rst.CursorType=adOpenDynamic
rst.ActiveConnection = Conn
rst.Open strSQL

End Sub
</code>

e in due.asp

<code>
&lt;!-- #INCLUDE FILE="adovbs.inc" --&gt;
&lt;!-- #INCLUDE FILE="uno.asp" --&gt;
...
strSQL = "SELECT * FROM Tabella"
ConnessioneDB "MioDB", strSQL, "NOPWD"

rst.MoveFirst
...
</code>

a questo punto se cerco di usare il recordset creato mi restituisce errore:

Errore di run-time di Microsoft VBScript errore "800a01a8'
Necessario oggetto: ''

due.asp, riga xx

dove riga xx è: rst.MoveFirst.

Se invece di creare il RS a livello di SUB mi limito alla sola connessione e creo il RS nella pagina due.asp mi ritrovo come errore la mancanza di connessione.

PERCHE'?

Quancuno sa spiegarmi il motivo di questo strano comportamento?
Daniele (Bochicchio) neanche tu?
O devo per forza fare la connessione in ogni pagina?

Grazie,
nick73 - nicolaln@inwind.it
25 messaggi dal 13 febbraio 2002
togli la sub e vedrai che funziona tutto.


27 messaggi dal 06 settembre 2002
Si ma se devo rinunciare alla SUB posso scrivere il codice direttamente su due.asp e in ogni altra pagina in cui mi occorre una connessione.
Il mio scopo è quello di avere una routine che mi connetta ad un db da utilizzare in più pagine senza dover ogni volta riscrivere il codice ma attraverso una chiamata e il passaggio di alcuni parametri quali il nome del db...
25 messaggi dal 13 febbraio 2002
immetti nella pagina in cui ti serve la connessione solo un include del file invece di riscriverti tutte le righe del codice.....................


27 messaggi dal 06 settembre 2002
io voglio proprio questo, che mi venga eseguito un determinato pezzo di codice (nella fattispecie la connessione al db e l'estrazione del recordset).
Con la tua soluzione dovrei creare un file per ogni routine e questo mi sembra un po' difficile da gestire, mentre creando un solo file con più sub da richiamare mi sembra più facilmente gestibile.
Per quanto riguarda l'uso di una function cosa dovrei farmi restituire, il rst? oppure un array con i valori di tale rst?
6 messaggi dal 11 febbraio 2002
Secondo me Helihall ha ragione.
Io farei un unico file di connesione in cui all'interno
controlliil valore di alcune variabili ( valorizzate nella pagina chiamante) e a seconda dellkoro valore di connetti ad un DB o ad un altro..
Il file di connessione rimane uguale ed unico.
( ad es. il file Conn.asp)

Ad es.
file uno.asp
&lt;%
NomeDB= request("DB")
%&gt;
&lt;!--#include File="Conn.asp"--&gt;
&lt;HTML&gt;
&lt;HEAD&gt; &lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
Esegui le query sul DB voluto
e mostra eventuali messaggi d'errore...
%&gt;
&lt;/BODY&gt;
&lt;/HTML

File conn.asp
Magari a seconda del valore della variabile NomeDB ti colleghi a macchine diverse o DB di natura diversi.

Alla fine è come se tu riscrivessi ogni volta il pezzo di codice, ma con il vantaggio di avere la situazione più mantenibile e controllata..
(pensa ad es. se dovessi cambiare in tutte le pagine il nome
del ODBC, in questo modo lo cambi una volta sola per tutte le pagine!).


Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.