Warum Access?
Weil Du dort Deine Benutzer hast.
Weil Access schnell Formulare baut.
Und weil Du Python oder R im Backend laufen lassen kannst.
Die Nutzer merken davon nichts. Du hast die Kontrolle.
Typische Anwendung
- Prognosen auf Knopfdruck
- Klassifikation von Text oder Bildern
- Data Science, ohne dass der Vertrieb Python installieren muss
Architekturüberblick
Komponente | Aufgabe |
---|---|
Access | Benutzeroberfläche, Datenhaltung |
VBA | HTTP-Anfrage an lokalen oder Cloud-Server |
Python/R | Verarbeitung, Modell, Rückgabe via API |
Backend vorbereiten (Python-Beispiel mit Flask)
from flask import Flask, request, jsonify
import joblib
model = joblib.load("modell.pkl")
app = Flask(__name__)
@app.route("/predict", methods=["POST"])
def predict():
daten = request.get_json()
eingabe = daten["eingabe"]
ergebnis = model.predict([eingabe])[0]
return jsonify({"vorhersage": ergebnis})
if __name__ == "__main__":
app.run(port=5000)
Das Ganze läuft auf dem lokalen Server oder einem kleinen Azure-Container.
Einfach per POST ansprechbar.
Access: Anfrage an Python-API senden
Function RufeVorhersage(eingabeWert As String) As String
Dim http As Object
Dim jsonRequest As String
Dim jsonResponse As String
Set http = CreateObject("MSXML2.XMLHTTP")
jsonRequest = "{""eingabe"":""" & eingabeWert & """}"
With http
.Open "POST", "http://localhost:5000/predict", False
.SetRequestHeader "Content-Type", "application/json"
.Send jsonRequest
jsonResponse = .ResponseText
End With
RufeVorhersage = ExtrahiereWert(jsonResponse, "vorhersage")
End Function
JSON-Wert extrahieren (Minimallösung)
Function ExtrahiereWert(json As String, schluessel As String) As String
Dim startPos As Long, endPos As Long
startPos = InStr(json, schluessel & """:" & """") + Len(schluessel) + 3
endPos = InStr(startPos, json, """")
ExtrahiereWert = Mid(json, startPos, endPos - startPos)
End Function
Beispiel: Prognose-Button im Formular
Private Sub btnVorhersage_Click()
Dim eingabe As String
Dim ergebnis As String
eingabe = Me.txtInput
ergebnis = RufeVorhersage(eingabe)
Me.txtErgebnis = ergebnis
End Sub
R-Backend funktioniert ähnlich
Mit plumber
statt Flask:
library(plumber)
#* @post /predict
function(req) {
eingabe <- req$body$eingabe
vorhersage <- predict(modell, data.frame(eingabe = eingabe))
list(vorhersage = vorhersage)
}
Wichtige Hinweise
- Access kommuniziert per HTTP – kein direkter DLL-Call
- Python-/R-API muss lokal laufen oder in der Cloud erreichbar sein
- Keine großen Datenmengen über JSON schicken – besser Referenzen
- Logging einbauen (siehe vorheriger Beitrag)
Vorteile dieser Lösung
- Du brauchst kein zusätzliches Frontend
- Deine Nutzer bleiben in ihrer gewohnten Umgebung
- KI läuft da, wo sie hingehört: im Backend
- Du hast volle Kontrolle über Datenfluss und Modelle
Zitat zum Mitnehmen
„Access vorne, Python hinten – das passt besser, als viele glauben.“
Wenn Du das für Dein KMU brauchst: Ich helfe beim Verbinden.
Ohne Cloud-Zwang. Ohne Abogebühren. Nur echte Integration.
Keine Antworten