Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6] Scorrimento recordset

Ho un recordset (ADO 2.7), aperto in modalita' adForwardOnly. Se lo
scorro con un ciclo do until rs.eof()...loop tutto funziona, mentre se
ne conto le righe e faccio un ciclo for...next li butta giu' la
connessione dopo n record (n e' piuttosto casuale). Qualcuno ha idea del
perche' succede cio? Il programma gira da sorgente (VB6SP6) su Seven.
Per chiarirci:
primo caso (che va bene
do until rs.eof()
  ...
  rs.movenext
loop
secondo caso (che butta giu' la connessione)
for lCount = 0 to lNumRecord
  ...
  rs.movenext
next
Bye by SixaM 8-]

 for lCount = 0 to lNumRecord
sarà forse
 for lCount = 0 to lNumRecord-1
????
l'ultimo non c'è va in eof...non lo controlli...casomai hai un resume
next...e chiude la conn!
While rs.eof
.........perchè non ti va bene?....o il do until...che è simile
Wend


l'errore di connessione...
Addendum 1: ...me lo da parecchio prima che il recordset sia finito
Addendum 2: ...me lo da sempre dopo lo stesso numero di letture
Addendum 3: ...me lo da anche col ciclo do until rs.eof()...loop
Bye by SixaM 8-]

 next
C'č un motivo perchč vuoi usare il FOR ?
Tieni presente che a seconda dell'apertura il numero di record non č sempre
validato.
Io se ho bisogno di un indice numerico 
lCount=0
Do until rs.eof
  ...
  lCount=lCount + 1
  rs.movenext
loop

 
Ma esattamente che errore ti da? puoi pastare il pezzo di codice esatto del
lloop? Nel primo messaggio ai detto che funzionava tutto con il do untile.
Cos'è cambiato da allora? Che modifiche hai apportato?

 Cos' cambiato da allora? Che modifiche hai apportato?
In effetti era l'unica info che non avevo ancora dato
(meaculpameacuplameaculpa)
[DBNETLIB] [ConnectionRead (recv ()).] - Errore generico di rete.
Controllare le impostazioni di rete
In rete si parla di ServicePack x SqlServer, di modifiche alla
proprieta' CommandTimeOut, ma non danno molto affidamento...
Bye by SixaM 8-]

 wrote:
zac
lasciando stare l'implementazione...anche a me il for mi sembra
pericoloso!
cmq...per me hai problemi di rete!
l'aveva anche qualcun altro
http://forum.aspitalia.com/forum/post/354093/AddPost.aspx
Se ti va bene può essere un qualche timeout (mi ricordo che in mysql
puoi anche impostare il timeout della query...)...ma vedrai è qualche
altro problema più complicato!


wrote:
zac
un altra complicata discussione che forse può aiutarti...(alla fin
fine questo ha aumentato il maxtokensize)...ma illustra anche una
serie di controlli da fare...
ma lato server un error log ce l'hai? vedrai che quello sarà
enormemente più chiaro!

 Seven.
[sbnip]
perchè no while/wend?
recordset.movefirst
while not eof(recordset)
    '
    recordset.movenext
wend
-- 
-> GbC|
www.gbcdepot.com
www.chiappori.com

 loop
il FOR lo uso xche' avevo letto che un ciclo do until rs.eof()..loop ad
ogni passaggio deve testare lo stato del recordset, perdendo tempo...
sapendo il numero di righe del recordset, con una for..next dovrei fare
prima.
Bye by SixaM 8-]

 prima.
Diciamo che se devi ciclare con un migliaia di righe, il problema non penso
proprio sia il If rs.eof=true, ma più o meno il codice che c'è dentro.
Almeno io non ho mai notato problemi grossi.

 prima.
Diciamo che se devi ciclare migliaia di righe, il problema di prestazioni
non penso proprio sia il If rs.eof=true, ma più o meno il codice che c'è
dentro.
Almeno io non ho mai notato problemi grossi.
Mi basta vedere quando dimentico il .movenext e in pochi secondi le griglie
mi si riempiono di migliaia di righe.

SixaM scriveva il 03/03/2011 :

Dipende da come stabilisci lNumRecord.
Siccome RecordCount non è affidabile finchè non si è ciclato almeno una 
volta fino alla fine del recordset, non lo si può utilizzare.
Potresti provare, prima di leggere RecordCount, a fare un MoveLast e 
poi un MoveFirst.
Comunque non è una cosa che sappia dirti con certezza, proprio perchè 
Microsoft si è sempre raccomandata di scorrere i recordset con l'until 
eof, visto che le varie tecnologie di connessione potrebbero non sapere 
il numero esatto di record fino alla fine del fetch, per cui credo di 
non avere MAI fatto un ciclo For su un recordset.
Alberto