Newsgroup: it.comp.appl.access
Titolo: Dubbi su EOF e ciclo DO Loop

Mi sono posto una domanda esistenziale...
normalmente quando apro un recordset faccio un movelast movefirst
ma se apro un recordset su una tabella che potrebbe essere vuota non 
posso farlo. quindi se per ipotesi ho la necessità di fare un do until 
rs.EOF non uso il movelast movefirst.
Solo che a questo punto posso essere ragionevolmente sicuro che il 
recordset parte dal primo record?
Altrimenti devo prima fare un controllo se ci sono record nel recordset 
e poi eventualmente faccio il movefirst?
Per farlo però quale secondo voi è il metodo migliore?
esempio: un recordcount <> 0 vi piace?
Saluti a tutti

 esempio: un recordcount <> 0 vi piace?
    No. In taluni casi recordcount potrebbe ancora essere indeterminato
e valere -1.
[...]
    Appena aperto un recordset potrebbe bastare testare il valore di BOF
ma io scrivo sempre qualcosa del genere:
        With rst
          If ((.BOF=True) AND (.EOF=True)) Then
            ' Il recordset e' vuoto.
          Else
            ' ...
          End If
        End With
(perche'... potrebbe capitare che in un secondo tempo si scrivano
istruzioni fra l'apertura del recordset e queste... ma anche solo per
abitudine).
--
Ciao :o)
Maurizio
--------
?SPQR(C)
 X
--------

 Maurizio
Io che invece voglio sempre risparmiare scrivo cosě:
With rst
    If .BOF AND .EOF Then
        ' Il recordset e' vuoto.
    Else
        ' ...
    End If
End With
Ciao Maurizio.
@Alex.

 
Molto interessante io comunque faccio movelast e movefirst per 
permettere poi al recordcount di sapere il numero esatto di record.
Almeno cosě sapevo che si doveva fare per avere il numero corretto e per 
posizionarsi sicuramente all'inisůzio del recordset.
Per quanto riguarda la routine suggerita mi sembra interessante ecredo 
proprio che la scroccherň, solo che a questo punto devo concludere che 
non esiste un modo di sapere a priori se il recordset č vuoto (tipo 
isnull, anche se č tutta un'altra cosa)
Grazie mille cmq

 End With
    Capisco, ma a me certi tipi di risparmi spaventano sempre un po'
quando penso ai costi futuri che potrebbero produrre. Non e' questo caso
particolare che merita questa osservazione, bada bene. Pero' da quando
scrivo codice "da leggere", cioe' esempi per i ng, mi sono abituato ad
esplicitare, per rendere il piu' possibile chiaro all'interlocutore il
senso del codice. Pensa che non e' da molto che ho smesso di usare
"Let"...


 isnull, anche se è tutta un'altra cosa)
[...]
    Beh... non e' esatto dire che non esista un modo... Quello che
abbiamo usato @Alex ed io e' *il modo*. Almeno e' il modo indicato dalla
guida:
Proprietà BOF, EOF
[...]
Osservazioni
[...]
Se si apre un oggetto Recordset che non contiene record, le proprietà
BOF e EOF sono impostate a True e la proprietà RecordCount dell'oggetto
Recordset è impostata a zero. Quando si apre un oggetto Recordset che
contiene almeno un record, il primo record è quello corrente e le
proprietà BOF e EOF sono impostate a False.
[...]



Ok credo che la lezione sia completa e ti ringrazio io cmq mi chiedevo 
solo se esisteva un comando diretto ma certo anche con BOF ed EOF il 
risultato è esatoo e completo
ciao e grazie


Per quanto riguarda il movelast e movefirst l'ho letto su dei libri di 
Visual Basic che lo consigliavano come metodo per avere restituito un 
recordset in modo corretto.
Ma allora è sbagliato o perlomeno inutile secondo te?

 Ma allora č sbagliato o perlomeno inutile secondo te?
Non č nč sbagliato nč inutile, ma io lo userei solo nel
caso servisse sapere quanti Records ci sono, in quanto inserisci
operazioni in piů che ralentano inutilmente.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
He, he, he.... io Let l'ho abbandonato con lo Spectrum Z80, ma solo
perchè ho iniziato con Assembler, 18anni fà.....!!! ;-)
"Quant'è bella giovinezza che....... di doman non c'è certezza..."
Magnifico...!
2°Citazione.
Per il resto ai ragione, sono anch'io molto legato alla precisione
della scrittura, e in questo caso sono convinto sia più didattico
sfruttare una proprietà diretta per quello che può essere un confronto.


 ciao e grazie
Se poi vuoi sapere se il recordset č vuoto prima ancora di aprirlo, puoi
sempre usare una funzione di aggregazione sui dominii tipo DCount (vedi
help).
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Ma allora č sbagliato o perlomeno inutile secondo te?
    Inutile, direi.
