Worum geht’s?
Du hast ein Access-Frontend im internen Netz.
Und WordPress als Portal im Web.
Jetzt willst Du bestimmte DatensĂ€tze nur dann freigeben, wenn intern jemand „Go“ sagt.
Formularbasiert, sicher und nachvollziehbar.
Wir bauen einen zweistufigen Genehmigungsprozess – lokal starten, online abschlieĂen.
Beispiel-Szenario
- Ein Mitarbeiter erfasst eine neue Lieferung in Access
- Der Vorgesetzte prĂŒft und genehmigt in Access
- Nach Genehmigung erscheint die Lieferung im WordPress-Portal fĂŒr den Lieferanten
Tabellenstruktur Access (lokal)
tbl_Lieferung
| Feldname | Typ |
|---|---|
| ID | Autowert |
| Datum | Datum |
| Kunde | Text |
| GenehmigtVon | Text |
| GenehmigtAm | Datum/Zeit |
| Exportiert | Ja/Nein |
| ExportDatum | Datum/Zeit |
Access-Formular mit Genehmigungs-Button
Formular: frm_Lieferung
Integriere einen Button btnGenehmigen.
Code dahinter:
Private Sub btnGenehmigen_Click()
If MsgBox("Freigabe jetzt erteilen?", vbYesNo + vbQuestion) = vbYes Then
Me.GenehmigtVon = Environ("USERNAME")
Me.GenehmigtAm = Now()
Me.Dirty = False
MsgBox "Freigabe gespeichert."
End If
End Sub
Optional: Button deaktivieren, wenn schon genehmigt.
Private Sub Form_Current()
Me.btnGenehmigen.Enabled = IsNull(Me.GenehmigtAm)
End Sub
Export: Von Access nach WordPress
Nur genehmigte DatensÀtze sollen ins Web.
Variante 1: REST-API (PHP + JSON)
In Access:
Public Function ExportLieferung(ID As Long)
Dim http As Object, jsonBody As String
Set http = CreateObject("MSXML2.XMLHTTP")
jsonBody = "{""id"":" & ID & "}"
http.Open "POST", "https://dein-portal.de/wp-json/seapi/v1/lieferung", False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer DEINTOKEN"
http.Send jsonBody
If http.Status = 200 Then
CurrentDb.Execute "UPDATE tbl_Lieferung SET Exportiert = True, ExportDatum = Now() WHERE ID = " & ID
Else
MsgBox "Fehler beim Export: " & http.Status
End If
End Function
Integriere das z. B. in einen Button oder Batch-Export.
WordPress: REST-API annehmen
Registriere eine Route in functions.php oder Plugin:
add_action('rest_api_init', function () {
register_rest_route('seapi/v1', '/lieferung', [
'methods' => 'POST',
'callback' => 'seapi_lieferung_import',
'permission_callback' => '__return_true'
]);
});
Und dann die Callback-Funktion:
function seapi_lieferung_import($request) {
$data = $request->get_json_params();
$lieferung_id = wp_insert_post([
'post_type' => 'lieferung',
'post_title' => 'Lieferung #' . $data['id'],
'post_status' => 'publish',
]);
update_post_meta($lieferung_id, 'lieferung_id', $data['id']);
update_post_meta($lieferung_id, 'importiert_am', current_time('mysql'));
return ['status' => 'ok', 'post_id' => $lieferung_id];
}
Optional: Freigabe im WordPress statt Access
Wenn der Chef lieber online freigibt:
- Access erstellt den Datensatz mit Status
pending - WordPress zeigt eine Admin-OberflÀche mit Button
Freigeben - Beim Klick wird Status =
publish, und Access wird per API benachrichtigt
Synchronisierung zurĂŒck nach Access
Du kannst per regelmĂ€Ăigem HTTP-GET neue Statuswerte zurĂŒckholen:
Public Function HoleFreigegebeneLieferungen()
Dim http As Object, json As String
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://dein-portal.de/wp-json/seapi/v1/freigegeben", False
http.Send
If http.Status = 200 Then
json = http.responseText
' Dann parsen und lokal updaten (z. B. mit JsonConverter)
End If
End Function
Formularbasierte Freigaben mĂŒssen nicht kompliziert sein.
Wichtig ist eine klare Trennung:
- Access = Datenerfassung und Genehmigung
- WordPress = Anzeige und ggf. finale Entscheidung
Mit REST, sauberem Triggern und etwas Disziplin klappt das auch ĂŒber Systemgrenzen.
Und das Schaf nickt.