Versionskontrolle von Stammdaten über Systeme hinweg: Access-Änderungen in WordPress rückverfolgbar

Warum ich das mache

In KMU-Projekten ist Access oft das Pflegesystem.
Und WordPress das Frontend für Kunden, Partner oder Support.
Aber was passiert, wenn ein Artikelname in Access geändert wird – und jemand fragt drei Wochen später, warum das anders im Shop steht?

Ich baue dafür eine einfache, aber robuste Versionskontrolle – mit Logging in beiden Welten.
Damit Du jederzeit sagen kannst: „Das war am 12.3. um 9:42 – vom Benutzer SCHMIDT geändert.“

1. Access: Änderungen erfassen

Ich nutze eine Trigger-Logik auf Formularbasis.
Kein SQL-Trigger, kein Shadow-Table.
Einfacher, transparenter, auditierbar.

Beispiel: Änderung in einem Artikel-Formular

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Dirty Then
        Call ProtokolliereAenderung("artikel", Me.artikelnummer, "bezeichnung", Me.bezeichnung.OldValue, Me.bezeichnung.Value)
        Call ProtokolliereAenderung("artikel", Me.artikelnummer, "preis", Me.preis.OldValue, Me.preis.Value)
    End If
End Sub

Logging-Funktion

Sub ProtokolliereAenderung(tabelle As String, id As Long, feld As String, altwert As Variant, neuwert As Variant)
    If Nz(altwert, "") = Nz(neuwert, "") Then Exit Sub
    CurrentDb.Execute "INSERT INTO changelog_access (datum, benutzer, tabelle, datensatz_id, feld, altwert, neuwert) " & _
                      "VALUES (Now(), '" & Environ("USERNAME") & "', '" & tabelle & "', " & id & ", '" & feld & "', '" & Replace(altwert, "'", "''") & "', '" & Replace(neuwert, "'", "''") & "')"
End Sub

2. Änderung an WordPress übergeben

Ich nutze REST-POST, wenn sich relevante Felder ändern.

Sub SendeAenderungNachWP(artikelnummer As String)
    Dim http As Object
    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

    Dim payload As String
    payload = "{""artikelnummer"":""" & artikelnummer & """, ""aktualisiert"":""" & Format(Now, "yyyy-mm-dd hh:nn:ss") & """}"

    http.Open "POST", "https://meinshop.de/wp-json/kmu/v1/Stammdaten-update", False
    http.SetRequestHeader "Content-Type", "application/json"
    http.SetRequestHeader "Authorization", "Bearer " & LadeToken()
    http.Send payload
End Sub

3. WordPress: Änderungen empfangen und loggen

REST-Endpunkt in PHP

add_action('rest_api_init', function () {
    register_rest_route('kmu/v1', '/stammdaten-update', [
        'methods' => 'POST',
        'callback' => 'stammdaten_update_log',
        'permission_callback' => '__return_true'
    ]);
});

function stammdaten_update_log($request) {
    global $wpdb;
    $data = json_decode($request->get_body(), true);
    $wpdb->insert('wp_stammdaten_log', [
        'artikelnummer' => $data['artikelnummer'],
        'zeitpunkt' => current_time('mysql'),
        'quelle' => 'Access',
        'info' => 'Update über API'
    ]);
    return ['status' => 'ok'];
}

Die Tabelle wp_stammdaten_log sieht so aus:

idartikelnummerzeitpunktquelleinfo
147112025-05-29 09:42:01AccessUpdate über API

4. Optionale Rückverlinkung ins Access

Manche Projekte wollen’s genau wissen:
Wann wurde ein Artikel in WP zuletzt synchronisiert?

Dann ergänze ich:

ALTER TABLE artikel ADD COLUMN letzter_sync_wp DATETIME;

Und nach erfolgreichem Sync:

CurrentDb.Execute "UPDATE artikel SET letzter_sync_wp = Now() WHERE artikelnummer = '" & artikelnummer & "'"

5. Web-Oberfläche im WordPress-Backend

Ich baue gern eine kleine Adminseite mit dem Plugin „WP Data Access“ oder einem Shortcode:

[table_log artikel="4711"]

Und zeige die letzten Änderungen aus wp_stammdaten_log.

6. Analyse: Kombinierter Report

Du kannst in Access eine Verknüpfung auf wp_stammdaten_log legen (per ODBC oder REST-Zwischentabelle) und dann beide Logs zusammenziehen:

SELECT a.datum, a.benutzer, a.feld, a.altwert, a.neuwert,
       wp.zeitpunkt AS sync_zeitpunkt, wp.info
FROM changelog_access a
LEFT JOIN wp_stammdaten_log wp ON a.datensatz_id = wp.artikelnummer
WHERE a.tabelle = 'artikel'
ORDER BY a.datum DESC;

Jetzt weißt Du:
Wer hat was geändert? Und wann kam’s im Shop an?

Mein nachvollziehbares Fazit

Stammdaten ändern sich – das ist Alltag.
Aber Änderungen müssen nachvollziehbar bleiben.
Access + WordPress lassen sich dafür gut koppeln, wenn Du ein bisschen Disziplin mitbringst.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert