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.