Newsgroup: it.comp.lang.visual-basic
Titolo: DB: Metodi Update, MoveNext e MovePrevious - Chiarimenti !!

Un saluto a tutti.
Vorrei chiarirmi qualche dubbio riguardo l'oggetto.
Supponiamo di avere un form, un controllo data e varie textbox legate
tramite il controllo data a una certa tbl del database.
[Update]
Per quello che avevo capito io, l'evento update mi permetteva di
"registrare" i dati modificati tramite le textbox (presenti sul
form...ciascuna delle quali e' legata ad un campo di una determinata tbl),
in particolare se non veniva richiamato tale evento le modifiche effettuate
a video non erano fisicamente apportate al db. Questo era quello che avevo
capito io.
Ho fatto pero' una prova: ho modificato a video un record e non ho
richiamato l'evento "update", ho chiuso l'applicazione e poi sono andato a
verificare nel db (aprendo il file tramite access), le modifiche effettuate
erano tutte presenti. Mi chiedo, anzi vi chiedo, ho inteso male io oppure
c'e' qualcosa che non "quadra" (nella prima delle 2 hp allora l'evento
update a cosa serve essenzialmente?). Certo che cmq io preferivo che
funzionasse tutto per come avevo capito (e' comodo effettuare le modifiche a
video e poi eventualmente tramite clic su apposito tasto effettuare la
registrazione!!).
[Moveprevious]
Dunque in questo caso, supponendo di avere 5 record nella tabella (un caso
banale quindi), e supponendo che il record corrente e' il num. 3, dopo due
clic su un commandbutton in cui imposto l'evento clic con il seguente
codice:
If Not (frm.Data1.Recordset.BOF) Then
   frm.Data1.Recordset.MovePrevious
Else
    MsgBox "Primo record della tabella", vbOKOnly
End If
dovrei essere sul primo record (e cosi' e'...fin qui tutto ok), a questo
punto un ulteriore clic dovrebbe mostrarmi il msgbox (ed e' quello che io
vorrei), l'applicazione invece si comporta nel seguente modo:
mi mostra un record vuoto (textbox vuote quindi)
al prossimo clic appare il msgbox
Praticamente e come se considerasse un record "0" (che fisicamente pero' non
c'e'). Sbaglio io qualcosa o deve funzionare cosi' (sinceramente sotto
access questo problema non l'ho mai avuto.....arrivato al primo record se
clicco parte il msgbox)
[movenext]
Utilizzando il seguente codice:
If Not (frm.Data1.Recordset.EOF) Then
   frm.Data1.Recordset.MoveNext
Else
    MsgBox "Ultimo record della tabella", vbOKOnly
End If
Analogo problema, arrivato all'ultimo dei 5 record, un eventuale clic mi
mostra prima un record "vuoto" e poi al successivo clic mostra il msgbox!!
grazie anticipatamente per le risposte e grazie a tutti coloro che fino ad
ora hanno chiarito i miei dubbi o risolto i miei problemi.
Ciao
e.

Per moveprev e movenext non devi fare il controllo su bof e eof prima dello
spostamento, ma dopo.
in altre parole:
frm.Data1.Recordset.MoveNext
If (frm.Data1.Recordset.EOF) Then
 MsgBox "Ultimo record della tabella", vbOKOnly
else
...
<resto del codice che era dopo l'if>
...
End If
lo stesso per il moveprev
Spero di esserti stato d'aiuto.
Ciao.

 Ciao.
Ciao, grazie per la risposta, solo che se faccio come dici tu la prima volta
che clicco, mi dice "primo record della lista" (se sono effettivamente sul
primo record), la seconda mi da errore, perche' non inserendo il controllo
dell'if come facevo io giustamente va a trovare (e a posizionarsi) su un
record inesistente. Se faccio come dici tu devo aggiungere un codice di
controllo dell'errore:
On Error GoTo 10
frm.Data1.Recordset.MovePrevious
If frm.Data1.Recordset.BOF Then MsgBox "Primo record della tabella",
vbOKOnly
Exit Sub
10:
Err.Clear
Inoltre il record vuoto di cui parlavo nel mio post iniziale appare
ugualmente (anche scrivendo integralmente il tuo codice, a prima volta da il
record vuoto e contemporaneamente appare il msgbox, la seconda volta da
l'errore che ti dicevo).
Non capisco quindi il perche' quando il record corrente e' il primo record
della tabella il clic su precedente ed il clic su primo elemento della lista
non coincidano!!
Infatti il "BOF" mi porta un record vuoto che ti assicuro che non esiste!!
ciao
e.

 End If
Per la precisione quel che intendeva fare penso che fosse questo.
frm.Data1.Recordset.MoveNext
If (frm.Data1.Recordset.EOF) Then
   frm.Data1.Recordset.MovePrevious
   MsgBox "Ultimo record della tabella", vbOKOnly
Else
   ...
   <resto del codice che era dopo l'if>
   ...
End If
-- 
Samuele Battarra
mail server: 
libero.it
, account: battarsa
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html