Startseite Inhaltsverzeichnis Nutzungsbedingungen Datenschutz Impressum Weitere Informationen

CODE-SCHNIPSEL

Wert in einer Access® Datenbank aus Word® oder Excel® heraus ändern

VBA und Makros • Codeschnipsel • Arbeitsblatt • Datenbank • Schnittstelle • ADO

Ausgangslage ... Was tut der Codeschnipsel?

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.

VBAVBA Codeschnipsel
XLSQuelltext zur Verwendung mit Microsoft® Excel®
DOCQuelltext zur Verwendung mit Microsoft® Word®
DBQuelltext zur Verwendung mit Microsoft® Access®

Der Quelltext ...

Option Explicit
Option Compare Text
' ****************************************************************
' Autor/en und Original-Quelltext unter:
' https://www.online-vba.de/vba_updatedbfield.php
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von https://www.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.
Es gelten die Nutzungsbedingungen von Online-VBA.de.
TOTOP
ANZEIGE