Newsgroup: it.comp.appl.access
Titolo: Fine del recordset

Sto facendo passare i record del recordset corrente in VBA
coll'istruzione DoCmd.GoToRecord , , acNext
come faccio per sapere quando sono arrivato alla fine?
il barbi

 come faccio per sapere quando sono arrivato alla fine?
Ciao, il barbi.
    Per esempio quando sei su un nuovo record (me.newrecord=true) se il
recordset e' aggiornabile. Altrimenti quando ottieni errore (e lo puoi
intercettare). Oppure quando il numero del record corrente e' uguale al
numero totale dei record. Pero' potresti usare un sistema... piu' migliore
;-) Per esempio usare DAO e giocare con recordsetclone e bookmarks. (Tutto
questo lo stai facendo in una maschera, giusto?)
-- 
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)
Ciao :o)
Maurizio Borrelli, Microsoft MVP Access
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio news:f8cNb.113567$_P.41...@news4.tin.it...

controllando l'errore
quando fai per passare ad un record inesistente restituisce un errore e si blocca
ora non mi ricordo il numero dell'errore, ma se fai un loop dovrebbe saltarti fuori da solo :-)

il barbi ha scritto:

Hai provato a clonare il recordset e usare la funzione .EOF (Credo voglia
dire End Of File)??
Ciao
-- 
Dario
--
Il bello della vita è vivere:
molti esistono, ecco tutto.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:f8cNb.113567$_P.41...@news4.tin.it...

Se stai usando questo sistema in una Form, come dovrebbe essere data
la funzione che stai proponendo, ritengo più indicato fare così:
Ti allego una Funzione che ho fatto per gestire i Pulsanti di spostamento in
una Form,
se metti la Funzione in un Modulo diventa Generica.....!
Questa è in realtà estratta da un Modulo di Classe, quindi magari qualche
ritocco...!
Gestisce GotoFirst, GotoNext, GotoPrevious, GotoLast, GotoN(Da sistemare)
Da richiamare usando le costanti implicite di Access per gli spostamenti:
NavMove Me,acFirst
NavMove Me,,4    (per l'opzione GOTO N)
Public Function NavMove(frm as Form, bytMode As Byte, Optional ByVal lngPos
As Variant)
'******************************************************************
'************* Sezione di Gestione Pulsanti spostamento ***********
'******************************************************************
   Dim rstMove As DAO.Recordset
   Dim lngAbs As Long
   Dim lngPosTo As Long
   Const ErrNoCurrentRow = 3021
   On Error GoTo HandleErrors
   If Not (frm.recordsetClone.Eof AND frm.recordsetClone.Bof)  Then
      Set rstMove = frm.RecordsetClone
      rstMove.Bookmark = frm.Bookmark
      Select Case bytMode
         Case acFirst
             rstMove.MoveFirst
         Case acPrevious
             rstMove.MovePrevious
         Case acNext
             rstMove.MoveNext
         Case acLast
             rstMove.MoveLast
         Case acgoto    'Poichè è un'estratto di un Modulo di Classe questo
devi adattarlo
            'If CLng(c_txt_RecPos) < CLng(Mid$(c_txt_TotalRecs, 3)) And
CLng(c_txt_RecPos) > 0 Then
            '   lngAbs = rstMove.AbsolutePosition + 1
            '   lngPosTo = CLng(lngPos)
            '   lngPosTo = lngPosTo - lngAbs
            '   rstMove.Move (lngPosTo)
            'End If
      End Select
      frm.Bookmark = rstMove.Bookmark
     End If
ExitHere:
      rstMove.close
      Set rstMove = Nothing
  HandleErrors:
    If Err.Number = ErrNoCurrentRow Then Resume Next
End Function
Ciao.
@Alex.

 ha scritto nel messaggio
news:f8cNb.113567$_P.41...@news4.tin.it...

If Me.CurrentRecord = _
Me.RecordsetClone.RecordCount Then
    ' il record corrente è l'ultimo quindi non usare
    ' il metodo DoCmd.GoToRecord
Else
    ' il record corrente NON è l'ultimo quindi usare
    ' il metodo DoCmd.GoToRecord per andare
    al record successivo
End
Tieni però presente che così fai uso delle libreie Microsoft DAO che dovrai
aggiungere ai riferimenti del tuo database se usi una versione di Access
successiva ad Access97.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

"Neo" <senz...@chiedetesul.NG> ha scritto nel messaggio
news:yscNb.250926$vO5.10...@twister1.libero.it...

direi che questa e' la soluzione piu' a buon mercato,
l'errore e' 2105
il barbi