KPI-Dashboards in Access – gespeist aus WordPress-MySQL-Daten

Warum ich das so mache

WordPress ist stark in OberflÀche.
Access ist stark in Auswertung.
Wenn Du beides kombinierst, hast Du ein Reporting mit Mehrwert.
Ohne Power BI, ohne Subscription, aber mit Live-Daten.

Ich nutze Access als zentrales Frontend.
Die Daten ziehe ich aus der MySQL-Datenbank der WordPress-Seite.
Die Dashboards: Formulare mit KPIs, Charts und Drilldowns.
Schnell. Einfach. Lokal. Robust.

1. ODBC-Verbindung zur WordPress-Datenbank

System-DSN einrichten (einmalig)

  • Treiber: MySQL ODBC 8.x Unicode Driver
  • Server: domain.tld oder IP
  • User: read-only-User
  • DB: wordpress_db
  • Option: SSL erzwingen, wenn verfĂŒgbar

In Access: „Externe Daten > ODBC-Datenbank > VerknĂŒpfung erstellen“

Dann alle relevanten Tabellen einbinden:

  • wp_posts (z. B. Bestellungen, Anfragen, CPT)
  • wp_postmeta (Felder und Zusatzinfos)
  • ggf. wp_users, wp_wc_orders, acf_fields, usw.

2. Jet-SQL: WordPress-Metadaten sauber auflösen

Ich arbeite gern mit Abfragen, die postmeta als Pivot darstellen.
Beispiel:

SELECT p.ID,
       p.post_title,
       MAX(IIF(m.meta_key = 'kpi_umsatz', m.meta_value, NULL)) AS umsatz,
       MAX(IIF(m.meta_key = 'kpi_region', m.meta_value, NULL)) AS region
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS m ON p.ID = m.post_id
WHERE p.post_type = 'auftrag'
AND p.post_status = 'publish'
GROUP BY p.ID, p.post_title

Das ergibt ein sauberes, auswertbares KPI-Dataset.
Tipp: Diese Abfragen kannst Du als gespeicherte Tabellen in Access puffern.

3. Dashboard-Formular in Access

Ich nutze ein Formular im Endlosmodus oder als Einzelformular mit Unterformularen.

KPI-Elemente als ungebundene Felder

Me.txtGesamtumsatz.Value = DSum("umsatz", "qry_kpi_auftraege")
Me.txtOffen.Value = DCount("*", "qry_kpi_auftraege", "status='offen'")

Dynamisches Balkendiagramm per MSForms

Oder als PivotChart mit verknĂŒpfter Abfrage:

SELECT region, SUM(umsatz) AS umsatz_summe
FROM qry_kpi_auftraege
GROUP BY region

4. Automatische Aktualisierung

Ich verwende einen simplen Timer auf dem Formular:

Private Sub Form_Timer()
    Call RefreshKPIs
End Sub

Und im RefreshKPIs-Modul:

Sub RefreshKPIs()
    Me.txtGesamtumsatz = DSum("umsatz", "qry_kpi_auftraege")
    Me.chartUmsatzByRegion.Requery
End Sub

5. Drilldown fĂŒr Arme mit Doppelklick

Ein Klick auf den KPI-Wert öffnet eine Detailtabelle:

Private Sub txtOffen_DblClick(Cancel As Integer)
    DoCmd.OpenForm "f_auftraege_liste", , , "status = 'offen'"
End Sub

6. Sicherheit und Performance

  • Nur Read-Only-Zugriff auf MySQL
  • Kein DELETE oder UPDATE auf externen Tabellen
  • TĂ€gliches Pull-In in lokale Puffertabellen bei Bedarf

Puffern:

CurrentDb.Execute "DELETE FROM t_auftraege_puffer"
CurrentDb.Execute "INSERT INTO t_auftraege_puffer SELECT * FROM qry_kpi_auftraege"

Optional als Scheduled Task mit Batch:

start "" "C:\Programme\Microsoft Office\MSACCESS.EXE" "Datenbank.accdb" /x Aktualisieren

7. Beispiel-KPIs, die ich regelmĂ€ĂŸig nutze

KennzahlQuelleAbfrage/Logik
Gesamtumsatzmeta_key: kpi_umsatzSUM ĂŒber alle AuftrĂ€ge
AuftrÀge pro Regionmeta_key: kpi_regionGROUP BY region
Ø AuftragswertUmsatz / AnzahlBerechnet im Formular
Neue Anfragenpost_type: anfrageWHERE post_date > Date()-7

Wenn Du Access und WordPress schon hast, brauchst Du kein weiteres Tool fĂŒr Dashboards.

Mit ein bisschen Jet-SQL, VBA und ODBC baust Du Dir eine saubere KPI-Plattform.
Und Deine Nutzer arbeiten in ihrer gewohnten Umgebung weiter – ohne Lizenzhölle.
Wenn Du willst, schicke ich Dir meine Dashboard-Vorlage und Mapping-Tabelle.

Kategorien:

Schlagwörter:

Keine Antworten

Schreibe einen Kommentar

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