Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Nachdem Sie ein Recordset-Objekt vom Tabellen- oder Dynaset-Typ erstellt haben, können Sie datensätze ändern, löschen oder hinzufügen. Es ist nicht möglich, Datensätze für ein Recordset-Objekt zu ändern, löschen oder hinzuzufügen, wenn das Objekt ein Momentaufnahme- oder Vorwärtsrecordset ist.
Viele der Änderungen, die Sie andernfalls in einer Schleife ausführen können, können mit einer Aktualisierungs- oder Löschabfrage mithilfe von SQL effizienter ausgeführt werden. Im folgenden Beispiel wird ein QueryDef-Objekt erstellt, um die Employees-Tabelle zu aktualisieren, und führt dann die Abfrage aus.
Dim dbsNorthwind As DAO.Database
Dim qdfChangeTitles As DAO.QueryDef
Set dbsNorthwind = CurrentDb
Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("")
qdfChangeTitles.SQL = "UPDATE Employees SET Title = " & _
"'Account Executive' WHERE Title = " & _
"'Sales Representative'"
' Invoke query.
qdfChangeTitles.Execute dbFailOnError
Sie können die gesamte SQL-Zeichenfolge in diesem Beispiel durch eine gespeicherte Parameterabfrage ersetzen. In diesem Fall würde die Prozedur den Benutzer zur Eingabe von Parameterwerten auffordern. Das folgende Beispiel zeigt, wie das vorherige Beispiel als gespeicherte Parameterabfrage umgeschrieben werden kann.
Dim dbsNorthwind As DAO.Database
Dim qdfChangeTitles As DAO.QueryDef
Dim strSQLUpdate As String
Dim strOld As String
Dim strNew As String
Set dbsNorthwind = CurrentDb
strSQLUpdate = "PARAMETERS [Old Title] Text, [New Title] Text; " & _
"UPDATE Employees SET Title = [New Title] WHERE " & _
"Title = [Old Title]"
' Create the unstored QueryDef object.
Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("", strSQLUpdate)
' Prompt for old title.
strOld = InputBox("Enter old job title:")
' Prompt for new title.
strNew = InputBox("Enter new job title:")
' Set parameters.
qdfChangeTitles.Parameters("Old Title") = strOld
qdfChangeTitles.Parameters("New Title") = strNew
' Invoke query.
qdfChangeTitles.Execute
Hinweis
Eine Löschabfrage ist wesentlich effizienter als Code, der ein Recordset-Objekt durchläuft und jeweils nur einen Datensatz ändert oder löscht.
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.