In Access, sto usando ADO per effettuare modifiche sui record di un database via codice VBA:
Ho fatto una form con una listbox che visualizza il contenuto di una tabella. In questa form ci sono pulsanti per aggiungere e modificare i record della listbox.
Ogni pulsante apre un'altra form in WindowMode acDialog, per cui il codice della form chiamante si ferma fino a quando la form di modifica/aggiunta record non viene chiusa.
Nella form di modifica/aggiunta ha dei controlli non associati in cui raccogliere i dati, e routine ADO per aggiungere record o per modificare (come nell'esempio):
A questo punto (dopo la modifica o l'aggiunta di un record e la conseguente chiusura della form di editing) la form chiamante esegue una Requery della listbox...codice:rst.Open "Agenzie", cnn, adOpenKeyset, adLockOptimistic rst.Find "idAgenzia = " & Me.idRec If rst.EOF Then Beep MsgBox "Record non trovato!", vbCritical Else rst!txtNomeAgenzia = Me.txtAgenzia rst!txtIndirizzo = Me.txtIndirizzo rst!txtLocalita = Me.txtLocalita rst!txtProvincia = Me.txtProvincia rst!txtTelefono = Me.txtTelefono rst!txtCellulare = Me.txtCellulare rst!txtFax = Me.txtFax rst!txtEmail = Me.txtEmail rst!txtPIVA = Me.txtPartitaIva rst!memNote = Me.txtNote rst.Update End If
Ma non succede nulla! La listbox non viene aggiornata.
Ma se chiudo la form e la riapro, le modifiche ci sono!
Allora ho aggiunto un pulsante per fare la requery manuale della listbox: la modifica al record oppure il nuovo record compaiono dopo qualche secondo!
ADO è così lento? Mi serve che le modifiche siano subito visibili, o perlomeno che io non possa fare nulla finchè le modifiche siano disponibili (e ovviamente senza usare il pulsante che fa la requery). Avete qualche suggerimento?
Grazie!