DrawPage bei Makro für ein Base Formular

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

rambrand
**
Beiträge: 21
Registriert: Di, 27.05.2008 11:44

DrawPage bei Makro für ein Base Formular

Beitrag von rambrand »

Hallo,

ich versuche gerade in einem Formular anhand eines Kombinationsfelds, mittels Event wird ein Makro ausgeführt, das den Wert ausliest, danach einen Select ausführt und das Ergebnis in ein Textfeld schreibt.

Ich hab mir aus Internetrecherchen folgenden Code zusammengebastelt.
Leider scheitert er schon bei der DrawPage mit der Meldung "Eigenschaft oder Methode nicht gefunden: DrawPage"
In allen Beispielen, die ich gefunden habe, mit denen man auf ein Forumlar zugreifen konnte, war das aber beschrieben, dass ich über das Document -> DrawPage -> Forms -> benamtes Formular zugreife.

Code: Alles auswählen

sub Berater
Dim oDoc as Object
Dim oDrawPage as Object
Dim oForm as Object

oDoc = ThisComponent
oDrawPage = oDoc.DrawPage()
oForm = oDrawPage.Forms.GetByName("Kundenadressenpflege Beta - In Entwicklung")
Berater = oForm.getByName("Berater").value
Kommando="SELECT Tel FROM ""Gesamt"" WHERE ""Berater""=Berater"
SQLStatement=ConnectToDB.createStatement
Result=SQLStatement.executeQuery (Kommando)
oForm.getByName("Tel").value=Result

end sub
Vielen Dank im voraus,
Markus Haupt



Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: DrawPage bei Makro für ein Base Formular

Beitrag von DPunch »

Aloha
Leider scheitert er schon bei der DrawPage mit der Meldung "Eigenschaft oder Methode nicht gefunden: DrawPage"
Diese Fehlermeldung würde ich nur dann vermuten, wenn Du aus einem Calc-Sheet heraus arbeitest.

Aber ein paar auf den ersten Blick offensichtliche Fehler:

Code: Alles auswählen

Kommando="SELECT Tel FROM ""Gesamt"" WHERE ""Berater""=Berater"
Da Berater eine Variable ist und kein konstanter Teil Deines String, musst Du die Strings verknüpfen ala

Code: Alles auswählen

Kommando="SELECT Tel FROM ""Gesamt"" WHERE ""Berater""=" & Berater
bzw, wenn Berater einen Name enthält wie "Schmidt", dann

Code: Alles auswählen

Kommando="SELECT Tel FROM ""Gesamt"" WHERE ""Berater""= '" & Berater & "'"

Code: Alles auswählen

oForm.getByName("Tel").value=Result
"Result" enthält keinen Wert, den Du einfach zuweisen könntest, sondern 0-x Ergebniszeilen.
Die korrekte Form wäre

Code: Alles auswählen

If Result.Next Then oForm.getByName("Tel").value=Result.getString(1)
oder eher, da Du von einem Textfeld sprichst

Code: Alles auswählen

If Result.Next Then oForm.getByName("Tel").Text=Result.getString(1)

Davon mal abgesehen, brauchst Du für derart simple Aufgaben eigentlich kein Makro, Stichwort Subformulare.
Öffne den "Formular-Navigator" -> Rechtsklick auf das Formular mit dem Namen "Kundenadressenpflege Beta - In Entwicklung" -> Neu -> Formular
Rechtsklick auf das neue Formular -> Reiter Daten -> als Tabelle "Gesamt" auswählen.
Auf die 3 Punkte neben "Verknüpfen von" klicken -> die entsprechende Verknüpfung zur Beratertabelle auswählen
Textfeld einbauen, als Datenfeld "Tel" wählen.
Antworten