16 messaggi dal 14 dicembre 2004
Ho un loop che cicla un recordset estratto da una tabella del database 1.

Per ogni record che viene ciclato, voglio effettuare un controllo su una tabella del database 2.

Io ho creato due funzioni di connessione ai due database: dbOpen e dbOpen2.
Quando voglio lavorare sul database 1 richiamo la prima funzione; quando voglio lavorare sul database 2 richiamo la seconda.

Tornando però al caso specifico del loop, non capisco se è possibile lavorare su entrambi contemporaneamente.

sql="SELECT * FROM Meet INNER JOIN AA ON Meet.IDAA = AA.ID WHERE IDAzienda="&IDAzienda&" ORDER BY data DESC"
Set Rs=conn.execute(sql)

if not (Rs.BOF and Rs.EOF) then
Rs.Movefirst
Do Until Rs.EOF
idmeet=Rs("Meet.ID")

dbClose()

dbOpen2()

sql5="SELECT * FROM Questionario WHERE IDevento="&idmeet
Set Rs5=conn.execute(sql5)
if not (Rs5.BOF and Rs5.EOF) then
quest="a"

else
quest="b"
end if

dbClose2()

dbOpen()
 
Rs.Movenext
Loop



questo codice mi dà errore al momento del loop, perchè ho dovuto chiudere la connessione al primo db per analizzare il secondo.


Avete qualche soluzione?
Grazie!
579 messaggi dal 28 gennaio 2004
non che abbia capito perfettamente perche ti serve un operazione del genere, ma provo comunque a dire la mia, il problema credo che stia nell'utilizzo del recordset, la conn poi anche non chiuderla, pero se non leggo male utilizzi lo stesso rs per eseguire operazioni diverse, prova a creare due rs e vedi se cambia qualcosa.....

ciauuuuuuu
16 messaggi dal 14 dicembre 2004
ma se non chiudo la connessione al db1 mi si incasina (al secondo giro del loop appena trova una connessione, cioè al Rs2, dice: Necessario oggetto: 'conn' )
guarda il codice sotto l'ho modificato un po'



non ho capito poi quando parli di fare due diversi Rs, mi sembrfa di farlo già:

c'è Rs che scorre i record di una tabella di db1.

per ogni record devo fare un controllo su una tabella di db2(tramite Rs5 controllo se almeno un record del Rs5 soddisfa la condizione).

quindi mi sembra sia giusto utilizzare un rs all'interno di un altro, no?

grazie mille!



sql="SELECT * FROM Meet INNER JOIN AA ON Meet.IDAA = AA.ID WHERE IDAzienda="&IDAzienda&" ORDER BY data DESC" 
Set Rs=conn.execute(sql) 

if not (Rs.BOF and Rs.EOF) then 
Rs.Movefirst 
Do Until Rs.EOF 
idmeet=Rs("Meet.ID") 

sql2="SELECT * FROM AA WHERE ID="&IDAA
Set Rs2=conn.execute(sql2)
account=Rs2("contatto")



dbClose() 

dbOpen2() 

sql5="SELECT * FROM Questionario WHERE IDevento="&idmeet 
Set Rs5=conn.execute(sql5) 
if not (Rs5.BOF and Rs5.EOF) then 
quest="a" 

else 
quest="b" 
end if 

dbClose2() 

dbOpen() 

Rs.Movenext 
Loop 



Modificato da bech il 23 agosto 2006 17.22 -
Modificato da bech il 23 agosto 2006 17.49 -
879 messaggi dal 09 luglio 2002
www.i-studio.it
Credo che il tuo problema stia nel fatto che usi un solo oggetto "conn" per collegarti al primo e al secondo DB. La connessione non puoi chiuderla mentre stai lavorando sul recordset perche' altrimenti il recordset non sa piu' dove andare a leggere i record...
Invece, crea due connessioni distinte ai due DB con due oggetti ADODB.Connection e usa le due connessioni per accedere ai due due DB, senza aprirle e chiuderle ogni volta.. (oltretutto dovrebbe anche essere piu' veloce perche' non sprechi il tempo necessario alla chiusura e all'apertura della connessione).

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
16 messaggi dal 14 dicembre 2004
Hai proprio ragione.

Grazie mille!

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.