Un suggerimento [Mailman], quando commenti il codice, limitati ad inserire commendi UTILI.
Questo ad esempio lo trovo inutule in quanto è OVVIO che siano dichiarazioni di variabili...
Dim rs As DAO.Recordset 'dichiaro la variabile rs
Dim fld As DAO.Field 'dichiaro la variabile fld
Dim vID As Variant 'dichiaro la variabile vID
Potrebbe esser epiù utile ad esempio
Dim vID As Variant ' ID(PK) del Nuovo Record Clonato
I Recordset, e di conseguenza la Maschera, sono una sorta di Elenco, questi elenchi hanno un riferimento di Item Corrente, quello che in quel momento è "attivo"... questo è il Bookmark(Segnalibro).
Il RecordsetClone di maschera è sempre Sincronizzato con il Recordset di maschera, salvo quando si opera sul RecordsetClone per Ricerca/Edit/AddNEw/Delete, in quel momento i 2 Bookmark possono non essere più allineati.
Ora è fondamentale sapere che il RecordsetClone, al contrario del Recordset di Maschera non si porta dietro gli eventi di Maschera, e questo è il motivo per cui si usa questo.
Mi spiego meglio, se sposti il Bookmark del Recordset di maschera si scatenano gi eventi di Repaint di maschera, di conseguenza è come usare il Pulsante Avanti/Indietro.
Questo sistema non ha senso se si deve ciclare l'intero recordset, in quanto è LENTISSIMO proprio per la necessità di ridisegnare la maschera e gestire gli eventi correlati(Current).
Per questo motivo si usa il RecordsetClone che, appunto Clona il Recordset di Maschera, non genera Repaint ed Eventi, consente la manipolazione, però alla fine richiede la sincronizzazione
Nel codice sopra la necessità di Sinctronizzazione avviene in 2 Momenti per 2 motivi diversi.
PRIMO CASO
Me.RecordsetClone.Update
Me.RecordsetClone.Bookmark = Me.RecordsetClone.LastModified
In questo caso dopo aver fatto l'ADDNEW, e di conseguenza l'UPDATE, è come aver fatto il Requery, ma non della maschera del RecordsetClone, quindi il Bookmark torna al 1° dell'elenco.
Noi però dobbiamo ricavare l'ID del NUOVO, e per farlo dobbiamo tornare con il Bookmark al Record Aggiunto, per questo si usa il Riferimento a LastModified.
SECONDO CASO
Me.Bookmark = Me.RecordsetClone.Bookmark
Fatto l'aggiornamento del Clone, e recuperato l'ID memorizzandolo in [vID], faccio il requery della Maschera, questo fa allineare il Recordset di Maschera, in quanto quando si è in presenza di Azioni come AddNew o Delete, serve rieseguire la Query, ed anche il RecordsetClone in quanto l'azine di Requery di maschera li riporta al 1° entrambi.
Noi però se vogliamo andare al [vID] spostiamo il Clone, e poi riallineiamo la maschera.
Sembra complicato... ma è tutto molto pulito e lineare... cpaita la filosofia.