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.
Option Explicit
' ************************************************************************************************
' Autor/en: http://www.online-vba.de - Marc Wershoven
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von www.online-vba.de!
' Original-Quelltext: www.online-vba.de/vba_updatedbfield.php
' ************************************************************************************************
Sub MWDatenInAccessDBschreiben()
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
Application.Cursor = xlWait
'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
Application.Cursor = xlDefault
Set oRecordSet = Nothing
Set oADODBConnection = Nothing
End Sub
Autor: Marc Wershoven (2014)
VBA Programmierer gesucht?
http://www.WershovenOnline.de
Sie haben beispielsweise eine Frage zu einer Ihrer eigenen Makroprogrammierungen in VBA? Oder Sie suchen Unterstützung und Informationen über eine bestimmte Microsoft® Excel® Formel? Bei nahezu allen Fragen und Problemen rund um Microsoft® Office und VBA Makros steht Ihnen unser individueller Quick E-Mail Support zur Verfügung. Einfach, schnell und unkompliziert Ihre Frage in einer E-Mail formulieren, mit oder ohne Screenshots oder einer Beispieldatei absenden und kurze Zeit später haben Sie eine vollständige Lösung inkl. ausführlicher Erklärung vom Profi in Ihrem Postfach!
Zusätzlich besteht die Option, dass wir uns mittels Fernwartung (selbstverständlich nach Ihrem Einvertändnis) direkt "live" mit Ihnen zusammen an Ihrem Bildschirm gemeinsam Fragen und Problemstellungen anschauen und lösen können!
Weitere Informationen zu diesem kostenpflichtigen Angebot finden Sie auf der Anbieterseite von WershovenOnline® auf www.wershovenonline.de.
Zum Anbieter des Quick-E-Mail-Support...