Newsgroup: it.comp.appl.access
Titolo: Recordset vuoto

Buon giorno volevo chiedervi se c'è un comando che verifica se un recordset
caricato sia vuoto oppure no senza l'utilizzo degli errori.
La mia routine carica 2 recordset e si sposat sul primo record. Però se uno
dei due recordset è vuoto scatta l'errore.
Io invece se uno dei due recordset è vuoto devo eseguire sempre delle
operazioni.
Esempio:
 Set RsSF = CurrentDb.OpenRecordset("SELECT DUSF.* FROM DUSF WHERE
(((DUSF.IDLE)=" & ID & "));")
 Set RsSP = CurrentDb.OpenRecordset("SELECT DUSP.* FROM DUSP WHERE
(((DUSP.IDLE)=" & ID & "));")
 RsSF.MoveFirst
 RsSP.MoveFirst
con gli ultimi due comandi mi si verifica l'errore di recorset vuoto, dovrei
invece arrivare a:
 Set RsSF = CurrentDb.OpenRecordset("SELECT DUSF.* FROM DUSF WHERE
(((DUSF.IDLE)=" & ID & "));")
 Set RsSP = CurrentDb.OpenRecordset("SELECT DUSP.* FROM DUSP WHERE
(((DUSP.IDLE)=" & ID & "));")
 If  RsSF or RSSP sono pieni Then
  Istruzioni
else
  Istruzioni
end if
Altra info: dopo aver caricato un recordset con l'istruzione set il
puntatore del recordset a che punto si trova?
All'inizio, alla fine in una posizione Random?
Ciao e grazie.

 caricato sia vuoto oppure no senza l'utilizzo degli errori.
RsSp.RecordCount
RsSP.EOF
Sib

 Ciao e grazie.
 Visto che apri recordset di tipo tabella, prova cosě:
Set RsSF = CurrentDb.OpenRecordset("SELECT DUSF.* FROM DUSF WHERE
(((DUSF.IDLE)=" & ID & "));")
 Set RsSP = CurrentDb.OpenRecordset("SELECT DUSP.* FROM DUSP WHERE
(((DUSP.IDLE)=" & ID & "));")
 If  RsSF.RecordCount > 0 Or RsSP.RecordCount > 0 Then
  Istruzioni di tipo 1
else
  Istruzioni di tipo 2
end if
Cosě facendo le Istruzioni di tipo 1 verranno eseguite se solo uno dei due
recordset contiene almeno un record.
Se invece vuoi che le Istruzioni di tipo 1 vengano eseguite solamente se
ambedue i recordset contengono record, sostituisci l'operatore Or con
l'operatore And, ovvero:
 If  RsSF.RecordCount > 0 And RsSP.RecordCount > 0 Then
  Istruzioni di tipo 1
else
  Istruzioni di tipo 2
end if
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:bmourj$h8o$1...@newsserver.cilea.it...

Banalmente ho pensato di utilizzare il comando
RsSF.RecordCount <>0
dopo il set. Se avete altri suggerimenti ben vengano
Grazie.


Piccola curiosità, io adesso sto scrivendo un messaggio e sono le 17.12, chi
mi risponde segna l'orario anticipato alla mia domanda.
Com'è possibile?
ciao e grazie.

 Grazie.
a parte che potevi anche pensarci un'ora e 12 minuti prima, mi pare che non
hai letto il secondo rigo della mia risposta.
Sib

 Com'è possibile?
ora sono le 17 e 16 e mi pare che l'orario risultante dei tuoi messaggi sia
un po' troppo avanzato direi
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio

casomai non fosse chiaro, volevo evidenziare il tuo orario un po' "fuori
orario"
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:KGTjb.7247$e5.2...@news1.tin.it...

Devo avere un problema con l'orologio, io la domanda l'ho fatta alle 16.40 e
dopo 25 minuti di prove ho dato a me stesso la risposta, ma voi mi avete
risposto prima che facessi la domanda stessa. Io adesso scrivo, e sono le
17.15, ma se mi rispondete avrete l'orario della risposta antecedente la mia
domanda.
Non capisco il motivo.
Ciao e grazie.

 All'inizio, alla fine in una posizione Random?
All'inizio. Vuol dire al primo record o alla posizione BOF se è vuoto.
Per questo non è necessario il tuo MoveFirst. Dopo il Set puo usare:
If Not RsSF.BOF Then
 'ci sono record, siamo già al primo e facciamo cose sempre grandiose
End If
-- 
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com