Ausgangslage: Access kennt Prozesse, ERP kennt den Bestand
đ Access ist oft schneller, flexibler, leichter zu Ă€ndern.
đ ERP-Systeme sind oft schwerfĂ€llig, aber zentral.
Du willst: Access soll Daten lesen, schreiben oder veredeln â ohne das ERP zu gefĂ€hrden.
Also: Schnittstelle bauen. Nicht am ERP vorbei.
Und: Datenmodelle sauber trennen.
Variante 1: ODBC-Zugriff auf ERP-Datenbank
Viele ERP-Systeme basieren auf SQL Server, Oracle oder PostgreSQL.
ODBC-Verbindung erlaubt Zugriff aus Access.
Beispiel: Artikelstamm lesen
Dim cnn As Object, rs As Object
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cnn.Open "Driver={SQL Server};Server=SRV01;Database=ERP_DB;Trusted_Connection=Yes;"
rs.Open "SELECT ArtikelNr, Bezeichnung FROM dbo.Artikel WHERE Aktiv = 1", cnn
Do Until rs.EOF
Debug.Print rs!ArtikelNr & " - " & rs!Bezeichnung
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
cnn.Close: Set cnn = Nothing
Nur Lesezugriff. Schreibzugriff nur nach Absprache mit ERP-Admin.
Variante 2: Datenexport aus dem ERP verarbeiten
ERP exportiert Daten als CSV, XML oder Excel.
Access liest diese regelmĂ€Ăig ein.
Beispiel: Auftragsexport verarbeiten
DoCmd.TransferText acImportDelim, , "tmp_AuftrÀge", "C:\Import\erp_auftrÀge.csv", True
CurrentDb.Execute "INSERT INTO tblAuftrÀge (AuftragsNr, Kunde, Datum) SELECT AuftragsNr, Kunde, Datum FROM tmp_AuftrÀge", dbFailOnError
Nach Verarbeitung: Archivieren oder löschen.
Variante 3: API-basierte Integration (z.âŻB. SAP, weclapp, Dynamics)
Moderne ERP-Systeme bieten REST-APIs.
Access kann mit MSXML2.XMLHTTP
oder Power Automate darauf zugreifen.
Beispiel: GET aus REST-API
Public Function HoleERPArtikel() As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.erp.de/v1/articles", False
http.setRequestHeader "Authorization", "Bearer geheimtoken123"
http.Send
HoleERPArtikel = http.responseText
End Function
Ergebnis ist JSON â weiterverarbeiten oder in Tabelle schreiben.
Beispiel: POST an ERP (Neuer Auftrag)
Public Function SendeNeuenAuftrag()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
Dim body As String
body = "{""kunde"":""4711"",""artikel"":""A-123"",""menge"":10}"
http.Open "POST", "https://api.erp.de/v1/orders", False
http.setRequestHeader "Authorization", "Bearer geheimtoken123"
http.setRequestHeader "Content-Type", "application/json"
http.Send body
End Function
Variante 4: ERP-Integration ĂŒber Power Automate
Access â exportiert CSV oder JSON
Power Automate â importiert in Dynamics, SAP o.âŻĂ€.
Antwort â in Datei schreiben oder in Tabelle zurĂŒckgeben
Vorteil: Kein Token-Handling in VBA nötig
Nachteil: Nur fĂŒr Cloud-ERP praktikabel
Synchronisation mit Access: Wichtige Punkte
- Nie direkt in ERP-Tabellen schreiben (auĂer in sauber dokumentierte Staging-Tabellen)
- Keine PrimĂ€rschlĂŒssel verĂ€ndern
- Alle Zugriffe protokollieren (Tabelle
tblSyncLog
) - Nur verĂ€nderte DatensĂ€tze ĂŒbertragen
- Konflikte vermeiden:
LetzteĂnderung
,SyncStatus
,GUIDs
nutzen
Beispiel: Ănderungsmarkierung in Access
If Me.Dirty Then
Me.SyncStatus = "Zu senden"
Me.LetzteĂnderung = Now()
End If
SpÀter:
SELECT * FROM tblKunden WHERE SyncStatus = 'Zu senden'
Nur das wird ans ERP ĂŒbertragen.
Typische Einsatzszenarien
- Preispflege in Access â Upload ins ERP
- AuĂendienstauftrĂ€ge â ins ERP schreiben
- Artikel- und Lagerdaten aus ERP â lokal verarbeiten
- Rechnungskopien aus ERP â in Access auswerten
- MahnlĂ€ufe oder Freigaben in Access erfassen â ERP synchronisieren
Fazit fĂŒr Entwickler
Access + ERP ist kein Widerspruch.
Du brauchst saubere Ăbergabepunkte, Logging, klare ZustĂ€ndigkeiten.
Access kann helfen, das ERP schlanker zu machen â nicht zu ersetzen.
Keine Antworten