Wert in Access Datenbank ändern
Ausgangslage - Was tut dieser Code-Schnipsel?
Folgend finden Sie ein sehr einfaches Beispiel, um in einer Microsoft Access Datenbank das
Feld "MeinFeld" in der Tabelle "MeineTabelle" mit einem neuen Wert zu füllen. Dies soll aus einer
anderen Anwendung, wie z.B. Word oder Excel, heraus passieren. Dabei soll der Datensatz geändert werden,
der in der Spalte "ID" die 1 enthält.
Für Fortgeschrittene ist dieses Beispiel allerdings zu einfach, da jegliche Plausibilisierungen
weggelassen wurden, damit auch Anfänger dieses Makro verwenden können.
Ergebnisse statt Aufwand & Arbeit?
Wir liefern Ergebnisse - Schicken Sie uns kurz Ihre Datei und Ihre Wünsche; wir integrieren den notwendigen Code professionell, beheben ggf. vorhandene Fehler, machen optional ein Code-Review, liefern bei Bedarf Performance-Optimierungen & setzen gewünschte Erweiterungen effizient für Sie um (und das zum Festpreis nach kurzer Sichtung).
Express-Service beauftragen
Der Quelltext
Option Explicit
Option Compare Text
' Original-Quelltext unter: https://www.online-vba.de/wert-in-access-datenbank-aendern
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de
Public Sub OVBAde_DatenInAccessDBschreiben()
Dim oADODBConnection As Object
Dim oRecordSet As Object
Dim sTableName As String
Dim sFilterKlausel As String
'Welcher Datensatz in welcher Tabelle?
sTableName = "MeineTabelle"
sFilterKlausel = "ID=1"
'Datenbankdatei (hier Access DB)
sDataBaseFile = "C:\TEST\Testdatenbank.accdb" 'wo liegt die Datei?
If Trim(CStr(Dir(sDataBaseFile))) = "" Then
MsgBox "Die Datenbank-Datei: " & sDataBaseFile & _
" wurde nicht gefunden.", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Verbindung zur Datenbank
Set oADODBConnection = CreateObject("ADODB.Connection") 'LateBinding, daher ohne Verweis
With oADODBConnection
.Provider = "Microsoft.ACE.OLEDB.12.0" 'für Access 2013
.Properties("Persist Security Info") = "False"
.Properties("Data Source") = sDataBaseFile
.Open
End With
'RecordSet öffnen
Set oRecordSet = CreateObject("ADODB.RecordSet") 'LateBinding, daher ohne Verweis
With oRecordSet
.CursorLocation = 3 'adUseClient
.CursorType = 2 'adOpenDynamic
.LockType = 3 'adLockOptimistic
.Open sTableName, oADODBConnection
.Filter = sFilterKlausel 'Filter setzen, ID muss 1 sein!
End With
'Daten schreiben
If Not oRecordSet.EOF Then 'Nur wenn der Datensatz gefunden wurde ID=1
'Wertzuweisung: MeinFeld bekommt "Neuer Wert!"
'Bei Zahlen entsprechend: oRecordSet.Fields("MeinFeld") = 12
oRecordSet.Fields("MeinFeld") = "Neuer Wert!"
'Speichern / Aktualisieren
oRecordSet.Update
End If
'RecordSet schließen
oRecordSet.Close
'Datenbankverbindung schließen
oADODBConnection.Close
Set oRecordSet = Nothing
Set oADODBConnection = Nothing
End Sub
Anmerkungen und Hinweise
Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2014.
Die Nutzung erfolgt auf eigene Gefahr.
Bitte denken Sie immer zuerst an eine ausreichende Datensicherung.
Wir können keinen kostenlosen Support anbieten.
Es gelten unsere Nutzungsbedingungen.
