Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Come utilizzare la proprietà Recordcount

La guida in linea mi dice:
"Nota   L'utilizzo del metodo MoveLast per riempire un oggetto Recordset
appena aperto può influire negativamente sulla prestazione. A meno che non
sia necessario disporre di un accurato RecordCount appena si apre un
Recordset, è consigliabile attendere il riempimento dell'oggetto Recordset
con altre parti di codice prima di effettuare il controllo della proprietà
RecordCount."
Ok, ma io ce l'ho proprio bisogno. Non c'è un'altra alternativa, meno
impegnativa? Se controllo che EOF and BOF siano contemporaneamente a true,
cambia qualcosa? Oppure anche loro richiedono che si sia acceduto a tutti i
record del database? (E' giusto "si sia acceduto"? Non vorrei irritare Pal
:)))  ). Preciso che il mio database è piccolissimo, quindi Recordcount non
mi crea alcun problema, ma vorrei mettermi al riparo per eventuali
applicazioni future.
--
Ciao a tutti
Cesare Nicola
http://digilander.iol.it/cesare
L'indirizzo del sito comune è:
http://www.murialdo.it:8000/it_lang_vb/

 wrote in message
89ugma$4nr$1...@pegasus.tiscalinet.it...


 > "Nota   L'utilizzo del metodo MoveLast per riempire un oggetto Recordset


 applicazioni future.
BOF e EOF assolvono alle rispettive funzioni che si abbia o che non si abbia
avuto accesso a tutti i record. Quando entrambi restituiscono True vuol dire
che il Recordset non contiene record (ossia e' vuoto).
Se proprio devi conoscere il numero dei record, in alternativa a Recordcount
potresti usare la funzione di aggregazione SQL "Count". Es.:
SELECT Count(*) AS MyRecordCount
FROM Tabella1;
che dovrebbe essere notevolmente piu' veloce di MoveLast.
L'indirizzo del sito comune č:
http://www.murialdo.it/it_lang_vb
--
Ciao.
Maurizio

 mln di record, starai li' un bel po'.
Sapere quanti record ci sono nel recordset fa risparmiare tempo se devi
ciclare su tutto l'elenco dei record.
Se usi il classico ciclo:
Do while not rsRecordset.Eof
   ' Tuo Codice
   rsRecordset.MoveNext
Loop
ci metti di + piuttosto che usare
Dim r as long
Dim lNumRec as long
rsRecordset.MoveLast
lNumRec=rsRecordset.RecordCount
For r=1 to lNumRec
   ' Tuo Codice
   rsRecordset.MoveNext
Next
Questo perchè non devi testare per ogni record se sei ad EOF.
La cosa ha senso solo su moli di dati "importanti". Su pochi record non te
ne accorgi neppure, oppure perdi addirittura + tempo.
Ciao
*Roby*

 Next
mi trovo deprimente. non ci avevo ancora pensato...
grazie, a.

 mi trovo deprimente. non ci avevo ancora pensato...
A me invece piace poco questa che reputo una *non* soluzione.
Potra' andare bene in ambiente monoutente ma credo che sia buona regola non
fare mai un ciclo su un rs in questa maniera. Sono troppo radicale?
--
Ciao.
Maurizio

 fare mai un ciclo su un rs in questa maniera. Sono troppo radicale?
grazie del sostegno :) -- ma anche se la soluzione non fosse quella
ottimale, avrei dovuto almeno pensarci...
in effetti poco dopo, nella vasca da bagno, mi ero detto: ma se il conteggio
totale cambia risschia di arrivare una pacca d'errore...
bisognerebbe fare qualche prova. e a occhio e croce potrebbe dipendere anche
da quanto e' complicato il ciclo e come vi si riesce a inserire un controllo
degli errori.

 fare mai un ciclo su un rs in questa maniera.
Mai dire mai. Comunque hai ragione sull'obiezione in caso di ambiente
multiutente.
Pero' su di un utente singolo, devi ammettere che è + veloce.
Ciao
*Roby*
P.S.
Comunque ormai i cicli su tutto il recordset si usano veramente poco. Solo
in caso di stampe, direi.

Grazie a tutti per le risposte. Solo oggi sono riuscito a vederle, perchè
Libero è morto ormai da una settimana, mentre Tiscali è in agonia.
Ciao
Cesare
http://digilander.iol.it/cesare