Danke R,
ich glaub, ich muss weiter ausholen. Die "thisDataBaseDocument.CurrentController" - Befehle laufen ins leere, da mein Start in der KDE-Konsole beginnt.
In dem Beitrag
viewtopic.php?f=10&t=19357 hatte ich nach einer Lösung gesucht, aus LO die Caller-ID eines (z.Bsp. FritzBox) Anrufes aufzufangen und in Base in einer von mir schon vorbereiteten DB weiterzuverarbeiten.
Da es keine LO-interne Lösung gibt, verwende ich den
JAnrufmonitor, der mit einer Erweiterung den Befehl "
/home/peter/bin/demo.sh %callernumber%" an das Skript "demo.sh" übergibt, welches so aussieht:
Code: Alles auswählen
#!/bin/bash
Dim scall as string
scall=$1
soffice "macro:///Standard.Module1.Test_Anruf($scall)"
exit
Im Skript wird nun das Makro
Test_Anruf aufgerufen und die Variable
scall übergeben.
Das Makro sieht so aus:
Code: Alles auswählen
Sub Test_Anruf(scall)
scaller = "012303-123457" 'Test-Telefonnummer
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDatenquelle = Databasecontext.getByName("LaBella_Datenbank-test2") 'Registrierte DB
oDatVerb = oDatenquelle.getConnection("","")
oStatement = oDatVerb.createStatement()
sSQL = "SELECT * FROM ""Kunden_Test"" WHERE (""TELEFON"" =" &"'" &scaller &"' OR ""TELEFON2"" =" &"'" &scaller &"')"
oErgSet = oStatement.executeQuery(sSQL)
oErgSet.Next
lSize = oErgSet.getRow()
If lSize = 0 Then
msgBox "Neue Telefonnumer: " &scaller
sFormularName = "Kundeneingabe"
Formular_aufrufen(sFormularName,scaller)
Else
msgBox oErgSet.getString(1) &CHR(13) & oErgSet.getString(4) & oErgSet.getString(2) &" "& oErgSet.getString(3) &CHR(13) _
& oErgSet.getString(5) &" "& oErgSet.getString(6) &CHR(13) & oErgSet.getString(9) &" "& oErgSet.getString(8) _
&CHR(13) &"Gemeinde: " & oErgSet.getString(7)
End If
End Sub
Die Variable
scall wird nun mit den Einträgen in meiner DB "
LaBella_Datenbank-test2" verglichen und zeigt bei vorhandener Telefonnummer den Kunden mit seiner Adresse in einer Messagebox an.
Die von mir eingeführte Variable
scaller ersetzt hier
scall, sonst hätte ich mich ständig selbst anrufen müssen, um das Makro zu prüfen.
Falls das verwendete ResultSet leer ist (kein Match in der DB), wird das Formular "
Kundeneingabe" geöffnet und die von
JAnrufmonitor übergebene Telefonnummer in das Feld "
TELEFON" eingetragen.
Das dazu benötigte Makro "
Formular_aufrufen" steht oben in der von Dir empfohlenen Version, die auch funktioniert.
Also jeder Versuch mit "CurrentController" oder "thisComponent.parent" führte zu einer Objekt-Fehlermeldung, da ich mich außerhalb einer DB oder eines Dokumentes befand.
Gruß Peter