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
oderUPDATE
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
Kennzahl | Quelle | Abfrage/Logik |
---|---|---|
Gesamtumsatz | meta_key: kpi_umsatz | SUM ĂŒber alle AuftrĂ€ge |
AuftrÀge pro Region | meta_key: kpi_region | GROUP BY region |
Ă Auftragswert | Umsatz / Anzahl | Berechnet im Formular |
Neue Anfragen | post_type: anfrage | WHERE 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.
Keine Antworten