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):
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
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...
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!