12/06/2024 - Antony73 ha scritto:
Il problema nell' uso del Requery risiede nella necessità del riposizionamento su record modificato. Il metodo Requery riposizione sul primo record. L' unico modo che mi viene in mente per il riposizionamento è ricorrere al metodo Findfirst del recordset subito dopo il Requery ma non funziona, io credo, poiché l' operazione avviene prima della fine dell'aggiornamento della query.
Come fai a riposizionarti…? Cerca di essere più tecnico altrimenti impieghiamo troppo.
Premesso che NON puoi usare REFRESH in caso di Aggiunte, ribadisco che serve il Requery, il metodo per riposizionarsi dopo il requery è banale ne hai 3 almeno perfettamente funzionanti:
- Un metodo che non uso perchè genera Flikering, ma non sposta il Record attivo, è questo:
Form!TuaForm!TuaSubFormContainer.Form.RecordSet.Requery
- Usare il Record Corrente, lo memorizzi fai il Requery e riaggiorni
Dim frm As Access.Form
Dim ActRecord As Long
Set frm=Form!TuaForm!TuaSubFormContainer.Form
ActRecord = frm.CurrentRecord
frm.Requery
DoEvents
Set frm.CurrentRecord=ActRecord
- Memorizzi la PK e dopo il requery sempre sul RecordsetClone fai il FindFirst alla PK memorizzata (io uso sempre e solo questo)
Dim frm As Access.Form
Dim rs As DAO.Recordset
Dim pk As Long
Set frm=Form!TuaForm!TuaSubFormContainer.Form
pk = frm.Controls(NomeCampoPK).Value
frm.Requery
DoEvents
Set rs = frm.RecordsetClone
rs.FindFirst "[" & NomeCampoPK& "]=" & pk
frm.Bookmark = rs.Bookmark
Quale di questi hai usato…? ;-)