69 messaggi dal 17 settembre 2002
Nella mia query di access io ho un problema:

mi continua a dare l'errore di:
ADODB.Recordset error '800a0e7d'

Operazione non consentita per un oggetto che fa riferimento a una connessione chiusa o non valida.

/melchioni/In lavorazione/Visualizza_IRRADIO2.asp, line 47

io vi posto TUTTO il mio codice, e se qualcuno sa la soluzione del mio enigmatico codice si faccia vivo il prima possibile

LA MIA SELECT:
<%
accessori=request("accessori")
audio=request("audio")
stereo=request("stereo")
digital=request("digital")
telefonia=request("telefonia")
video=request("video")
rs4.Open "SELECT NomeFamiglia_i, NomeSottoFamiglia_i, NomeArticolo, BreveDescrizione_i, CodiceArticolo, CodiceEAN, PrezzoEuro, NomeFamiglia_e, NomeSottoFamiglia_e, BreveDescrizione_e FROM IRRADIO WHERE "

if accessori="Accessori" then
strsql=strsql & "NomeFamiglia_i = '"&accessori&"' "
strsql=strsql & "or "
end if

if audio="Audio" then
strsql=strsql & "NomeFamiglia_i = '"&audio&"' "
strsql=strsql & "or "
end if

if stereo="Car" then
strsql=strsql & "NomeFamiglia_i = '"&stereo&"' "
strsql=strsql & "or "
end if

if digital="DTT" then
strsql=strsql & "NomeFamiglia_i = '"&digital&"' "
strsql=strsql & "or "
end if

if telefonia="Telefonia" then
strsql=strsql & "NomeFamiglia_i = '"&telefonia&"' "
strsql=strsql & "or "
end if

if video="Video" then
strsql=strsql & "NomeFamiglia_i = '"&video&"'"
end if

strsql=strsql & " ORDER BY NomeFamiglia_i "%>

LE MIE STRINGHE DI CONNESSIONE AL DB DI ACCESS E DEL RECORDSET:

<%option explicit%>
<!--#include file="adovbs.inc"-->
<%Dim conn
set conn=server.CreateObject("ADODB.connection")
conn.ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mdb\dbAudioVideo.mdb"
conn.Open
Dim rs4, accessori, audio, stereo, digital, telefonia, video
set rs4=server.CreateObject("ADODB.Recordset")%>

Io ho provato invano con queste possibilità:
1)fare tutte le stringhe in un file a parte per poi includerlo
2)chiudere conn e settarlo=nothing alla fine del mio codice html
3)fare tutto il codice con function e sub

PS tutte le varaibili fanno riferimento a delle checkbox

Tutto lavoro e niente spasso, il morale scende in basso!
31 messaggi dal 06 settembre 2002
Hola.

Perchè intitoli il post "codice enorme senza "terminazione" .. SE NON ERRO l'erroe che riporti te lo da quando cerchi di agire su di un recordset che si riferisci ad una connessione già chiusa.. ma il tuo titolo mi fa pensare che ci possa essere un "timeout" della connessione che entra in azione.

MA CI IMPIEGA TANTO LO SCRIPT AD ESEGUIRSI?
31 messaggi dal 06 settembre 2002
Scusa, piccolo dubbio!...

ma

rs4.Open

nel codice viene DOPO la parte che ti riporto, vero?

"
Dim conn
set conn=server.CreateObject("ADODB.connection")
conn.ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mdb\dbAudioVideo.mdb"
conn.Open
Dim rs4, accessori, audio, stereo, digital, telefonia, video
set rs4=server.CreateObject("ADODB.Recordset")%>
"

Se non è così, l'errore è questo!! Inoltre la sintassi del Rs.Open mi sembra che preveda due o tre parametri in più che si riferiscono al movimento del cursore nel recordset e alla possibilità di scrivere e/o solo leggere verso il recordset(ma forse sono opzionali).

HOla.

69 messaggi dal 17 settembre 2002
ora provo se va, poi ti faccio sapere il risultato.

PS scusa per il titolo, ma stavo già pensando ad un altro problema.

Hola anche a te amigo!!!

Tutto lavoro e niente spasso, il morale scende in basso!
69 messaggi dal 17 settembre 2002
Janko, non ho ottenuto un gran che.... mi da sempre quell'errore!!

Tutto lavoro e niente spasso, il morale scende in basso!
11.886 messaggi dal 09 febbraio 2002
Contributi
C'è un problema logico...
Componi la tua stringa sql in maniera dinamica, usando degli if in questo modo:

if stereo="Car" then
strsql=strsql & "NomeFamiglia_i = '"&stereo&"' "
strsql=strsql & "or "
end if

dunque, verrebbe da pensare che quando la variabile strsql è stata composta completamente, sia usata in questo modo:

rs4.Open strsql

invece tu apri il recordset prima ancora di comporre la stringa. Guarda il tuo codice:

telefonia=request("telefonia")
video=request("video")
rs4.Open "SELECT NomeFamiglia_i, NomeSottoFamiglia_i, NomeArticolo, BreveDescrizione_i, CodiceArticolo, CodiceEAN, PrezzoEuro, NomeFamiglia_e, NomeSottoFamiglia_e, BreveDescrizione_e FROM IRRADIO WHERE "

if accessori="Accessori" then
strsql=strsql & "NomeFamiglia_i = '"&accessori&"' "
strsql=strsql & "or "
end if

lo vedi che rs4.Open compare prima di if accessori = "Accessori" ecc...
devi toglierlo da lì. Quello che volevi fare era inizializzare la stringa. Beh puoi farlo così:

strsql = "SELECT NomeFamiglia_i, NomeSottoFamiglia_i, NomeArticolo, BreveDescrizione_i, CodiceArticolo, CodiceEAN, PrezzoEuro, NomeFamiglia_e, NomeSottoFamiglia_e, BreveDescrizione_e FROM IRRADIO WHERE "

'blocco degli if che compongono strsql

rs.Open strsql


in questo modo dovrebbe funzionare
Modificato da BrightSoul il 04 novembre 2002 15.00 -

Enjoy learning and just keep making
69 messaggi dal 17 settembre 2002
Non Funzionaaaaaaaaaa, caaaazzzzzzzzoooooooo!!!!

Mi viene da piangere, è tre giorni che lavoro su sta pagina e non riesco ad uscirne fuori, non è che qualcuno può venire qui da me e darmi una mano di persona?


Tutto lavoro e niente spasso, il morale scende in basso!
11.886 messaggi dal 09 febbraio 2002
Contributi
calma... non disperare.
Quello del post precedente era da fare comunque, quindi hai fatto un passo avanti.
Guarda il codice che hai usato per istanziare gli oggetti recordset e connection:

Dim conn
set conn=server.CreateObject("ADODB.connection")
conn.ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mdb\dbAudioVideo.mdb"
conn.Open
Dim rs4, accessori, audio, stereo, digital, telefonia, video
set rs4=server.CreateObject("ADODB.Recordset")%>
"

La connessione che hai aperto non è legata in alcun modo al recordset. Devi specificarlo in qualche punto che rs4 deve servirsi dell'oggetto conn per caricare i dati dal db.
Integra il tuo codice in questo modo:

Dim conn
set conn=server.CreateObject("ADODB.connection")
conn.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mdb\dbAudioVideo.mdb"
Dim rs4, accessori, audio, stereo, digital, telefonia, video
set rs4=server.CreateObject("ADODB.Recordset")%>
rs4.ActiveConnection = conn

Hai visto? ho aggiunto l'ultima riga che indica proprio al recordset rs4 di usare l'oggetto conn che hai appena aperto

quando apri il recordset, per sicurezza, specifica tutti i parametri. Anzichè fare:

rs4.Open sqlstring

usa questa sintassi:

rs4.Open sqlstring,cn,3,3

Vedrai che funziona (2)

Enjoy learning and just keep making

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.