
Ich verwende eine MS Access 2010-Datenbank (.accdb), um eine Verbindung zu einer Datenbank in SQL Server 2016 herzustellen.
Ich habe ein Formular, das eine mit einer SQL Server-Ansicht verknüpfte Tabelle als Datensatzquelle verwendet, sodass Benutzer eine Reihe von Datensätzen durchsuchen können. Das Formular verfügt über eine Schaltfläche, die als separates Formular im Dialogmodus geöffnet wird, damit ein Benutzer einen ausgewählten Datensatz aus dem Suchformular bearbeiten kann. Hier ist der Code der Schaltfläche:
Private Sub btnEdit_Click()
Dim RecordNumber As Integer
On Error GoTo btnEdit_Click_Err
'open the data entry form in edit mode, showing the currently selected record from the browse form
DoCmd.OpenForm "Application Edit - Template", acNormal, "", "[DB_Key]=" & txtDBKey, acEdit, acDialog
Me.Refresh
btnEdit_Click_Exit:
Exit Sub
btnEdit_Click_Err:
MsgBox Error$
Resume btnEdit_Click_Exit
End Sub
Der Aufruf der Methode „Me.Refresh“ aktualisiert das Formular nicht mit den im Bearbeitungsformular vorgenommenen Änderungen.
Ich weiß, dass ich mit Me.Requery eine Aktualisierung der Daten erzwingen kann, aber leider wird dadurch auch der Fokus auf den ersten Datensatz im Datensatz verschoben. Ich weiß, dass ich die Datensatznummer in einer Variablen speichern und dann mit DoCmd.GoToRecord zurücknavigieren kann. Ich möchte einfach lieber, dass MS Access so funktioniert, wie es soll.
Weiß jemand, warum Me.Refresh nicht funktioniert?