Formularbasierte Datenfreigabe: Access und WordPress im Genehmigungsprozess kombiniert

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

FeldnameTyp
IDAutowert
DatumDatum
KundeText
GenehmigtVonText
GenehmigtAmDatum/Zeit
ExportiertJa/Nein
ExportDatumDatum/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:

  1. Access erstellt den Datensatz mit Status pending
  2. WordPress zeigt eine Admin-OberflÀche mit Button Freigeben
  3. 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.

Kategorien: