Zentrale Stammdatenpflege in Access – mit direktem Push in WordPress-Tabellen

Warum ĂŒberhaupt Access?

Access ist schnell.
FĂŒr KMU intern sowieso.
Kein Login, kein Plugin, kein Ladebalken.
Du klickst, Ànderst, speicherst.

Aber was, wenn dieselben Daten auch auf der Website gebraucht werden?
Zum Beispiel Ansprechpartner, Produktinfos, Öffnungszeiten, Lieferantendaten.

Dann brauchst Du einen Weg, die Daten direkt in WordPress zu schieben – ohne Copy & Paste.

Ausgangslage

  • Stammdaten liegen in Access
  • Website lĂ€uft mit WordPress (MySQL)
  • Die WordPress-Datenbank ist erreichbar (z. B. via ODBC oder API)

Wir nehmen den direkten Push: Access → MySQL → WordPress.

Variante 1: Direkter Schreibzugriff per ODBC

Zugriff ĂŒber MySQL ODBC 8.0 Driver.
Verbindung als DAO oder ADODB.

Public Function MySQLUpdate(sql As String)
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    conn.Open "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
              "Server=deinserver;" & _
              "Database=wordpress;" & _
              "User=wpeditor;" & _
              "Password=geheim;"

    conn.Execute sql
    conn.Close
End Function

Beispiel: Öffnungszeiten in wp_options schreiben

Call MySQLUpdate("UPDATE wp_options SET option_value = 'Mo-Fr 8-17 Uhr' WHERE option_name = 'oeffnungszeiten'")

Oder als Custom Post Type:

Call MySQLUpdate("INSERT INTO wp_posts (post_type, post_title, post_content, post_status) " & _
                 "VALUES ('standort', 'Lager Sierksdorf', 'Geöffnet Mo-Fr 8-17 Uhr', 'publish')")

Wichtig: Nur mit Backup arbeiten.
WordPress hat viele AbhÀngigkeiten (z. B. GUIDs, Postmeta, Term-Relationen).

Variante 2: Push per REST-API

Eleganter und sicherer: Access sendet JSON an die WordPress-API.

WordPress-Setup (in functions.php oder Plugin):

add_action('rest_api_init', function () {
    register_rest_route('intern/v1', '/stammdaten', [
        'methods' => 'POST',
        'callback' => 'empfange_stammdaten',
        'permission_callback' => '__return_true'
    ]);
});

function empfange_stammdaten($request) {
    $daten = $request->get_json_params();
    
    update_option('oeffnungszeiten', $daten['oeffnungszeiten']);
    
    return ['status' => 'ok'];
}

Access-Code:

Public Sub PushStammdaten()
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")

    Dim json As String
    json = "{""oeffnungszeiten"":""Mo-Fr 8-17 Uhr""}"

    http.Open "POST", "https://deine-domain.de/wp-json/intern/v1/stammdaten", False
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "Authorization", "Bearer geheimtoken"
    http.Send json

    MsgBox http.responseText
End Sub

Der Vorteil: Du brauchst keine direkte Datenbankverbindung.
Auch aus dem Homeoffice nutzbar.
Und sicherer – weil Du die API kontrollieren kannst.

Felder mit ACF aktualisieren

Wenn Du Advanced Custom Fields nutzt, kannst Du auch ACF-Werte setzen:

update_field('telefonnummer', $daten['telefon'], $daten['post_id']);

Oder:

update_post_meta($daten['post_id'], 'telefonnummer', $daten['telefon']);

Synchronisationslogik in Access

Access kann Änderungen erkennen:

If Me.Telefon_Old <> Me.Telefon Then
    Call PushTelefon(Me.ID, Me.Telefon)
End If

Oder zyklisch alles rausschicken (nicht schön, aber funktioniert).

TĂ€gliche Übergabe per Taskplaner

Public Sub AutomatischerPush()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Standorte WHERE Aktiviert = True")

    Do Until rs.EOF
        Call PushStammdatenJSON(rs("ID"), rs("Name"), rs("Oeffnungszeiten"))
        rs.MoveNext
    Loop
End Sub

Den Aufruf kannst Du per /x-Makro beim Windows-Taskplaner hinterlegen.

SchÀfchen meint:

Access bleibt die Schaltzentrale.
WordPress zeigt nur, was freigegeben ist.
Die Stammdatenpflege gehört nicht ins Web. Aber die Ergebnisse schon.

Wenn Du beides kombinierst, wird Deine IT endlich rund.
Wie ein Schaf auf der Weide: Access schubst. WordPress meckert nicht.

Kategorien:

Schlagwörter: