Ich möchte auf eine gehostete FM-Lösung (lokaler FM-Server V.20) SQL-Statements loslassen, ohne dass auf dem Client-Rechner ODBC eingerichtet sein muss. Meine Idee: Ich connecte per Data-API (klappt) und führe ein kollaboratives Script aus (klappt nicht), dem ich mein SQL-Statement als Argument übergebe. Die entsprechenden Code-Fragmente habe ich aus den Beispielen zu den MBS Plugins für Xojo.
Dieses FM-Skript funktioniert problemlos, wenn ich es in Filemaker direkt per Tastenklick ausführe:
Variable setzen [ $args ; Wert: Hole(ScriptParameter) ]
Variable setzen [ $result ; Wert: SQLAusführen ( $args ; “<:>” ; “<*>”) ]
Feldwert setzen [ sqltest::args ; $args ]
Feldwert setzen [ sqltest::result ; $result ]
Aktuelles Script verlassen [ Textergebnis: $result ]
Wobei die beiden “Feldwert setzen” nur der Kontrolle in zwei globale Felder dienen, klappt.
Auf Xojo-Seite habe ich diese Test-Methode gebaut:
Var dbconnection As New FMDataMBS
var dbresponse as FMResponseMBS
dbconnection.Database = “SQL_TEST”
dbconnection.Password = “europa22”
dbconnection.Username = “admin”
dbconnection.Server = “192.168.10.7”
dbresponse = dbconnection.Login
If dbresponse.CURLErrorCode <> 0 Then
MsgBox "curl: " + dbresponse.CURLErrorMessage
quit
else
msgbox “Connected!”
dbconnection.Layout = “sqltest”
dbresponse = dbconnection.ExecuteScript(“sql_call”, “select count(*) from sqltest”)
if dbresponse<>nil then
msgbox dbresponse.RawResultJSON
else
msgbox “kein Resultat!”
end if
End If
Bis “Connect!” läuft es, danach ist dbresponse immer NIL … warum?
Es sieht so aus, als ob jede Serverantwort vom Typ FMResponseMBS generell leer ist. Fragt man nach Werten vom Typ String, bekommt man eine Antwort.