Seite 1 von 1

Daten aus einem Datenbank Formular an einen Basic Dialog senden?

Verfasst: Mo 12. Dez 2016, 11:14
von Jensemann
Hallo,
ich hoffe mal, ich habe einen einigermaßen passendes Betreff für meine Anfrage gefunden. Ich hatte diese Anfrage bereits im Forum Programmierung gepostet, jedoch habe ich dort dann erfahren, dass die Anfrage wohl besser in den Base Bereich passt.

Ich schreibe gerade an einer Datenbank auf der Grundlage eines externen HSQL-DB (2.3.4). Ich habe mich für eine externe Variante entschieden, weil ich auf jeden Fall die Daten von der ODB Datei getrennt gespeichert haben wollte, evtl. soll das ganze später auch noch als multiuser-Version laufen können. Nun gut, da bin ich aber zur Zeit noch nicht.

Ich habe mich dazu entschlossen, einige der Daten nicht über ein Formular einzugeben, sondern über individuell gestaltete Dialoge. Dazu verwende ich die Makrosprache LibreOffice-Basic.
Nun stehe ich vor der Herausforderung, dass ich den Dialog per Button aus einem Formular heraus starte. Klappt auch gut... Nur ich muss nun die Daten des zugrundeliegenden Formulare an den Dialog übertragen und komme da gerade nicht wirklich weiter.
Das jemand hier aus dem Forum so etwas mal gemacht und kann mir da eine Idee oder Richtung vorgeben?

Grüße
Jensemann

Re: Daten aus einem Datenbank Formular an einen Basic Dialog senden?

Verfasst: Mo 12. Dez 2016, 16:07
von RobertG
Hallo Jensemann,

an die Daten aus einem Formular kommst Du über die damit verbundene Datenquelle ran. Hier nur eins der Beispiele aus dem Handbuch:

Code: Alles auswählen

DIM ID AS LONG
DIM sName AS STRING
DIM dValue AS CURRENCY
DIM dEintritt AS NEW com.sun.star.util.Date
ID = oForm.getLong(1)
sName = oForm.getString(2)
dValue = oForm.getDouble(4)
dEintritt = oForm.getDate(7)
In dem Formular ist eine Tabelle/Abfrage hinterlegt, die in der ersten Spalte eine Integer-Zahl (Datenbank-Integer > Basic-Long), in der zweiten Spalte einen Namen usw. stehen hat.
Du sendest also nicht von dem Formular aus an den Dialog, sondern Du liest die Daten aus dem Formular per Basic aus.
Ebenfalls aus dem Handbuch, jetzt aber in einem Dialog und von den Bezeichnungen her ein bisschen angepasst:

Code: Alles auswählen

oDialog2.getControl("NumericField1").Value = ID
oDialog2.getControl("TextField1").Text = sName
Lade Dir einfach das aktuelle Handbuch herunter. Da habe ich in der Fassung für LO 5.1 auch Dialoge beschrieben, die aufzeigen, wie mit Dialogen Daten bearbeitet werden können.

Gruß

Robert

Re: Daten aus einem Datenbank Formular an einen Basic Dialog senden?

Verfasst: Mo 12. Dez 2016, 16:32
von Jensemann
Hallo Robert,
vielen Dank für Deine Antwort.
Mit Deinem Handbuch arbeite ich gerade, und habe es auch gerade geschafft, Daten aus Feldern eines Formulars an einen Dialog zu übertragen.
Es ging dann letztendlich mit:

Code: Alles auswählen

Sub dlg_Form_Database_show
    DialogLibraries.LoadLibrary("Standard")
    oDialog = CreateUnoDialog( DialogLibraries.Standard.dlg_db_Formular )
    oDialogModel = oDialog.Model
    oLabel = oDialog.GetControl("Label1")
    oLabel.Text = "Text aus dem Code!"
    Rem *** Zugriff auf die aktuelle Datenbank im Formular
    oDoc = thisComponent
    oDrawpage = oDoc.drawpage
    oForm = oDrawpage.forms.GetbyName("Adressen")
    oSubForm = oForm.GetbyName("Produkte")
    frm_Feld_Vorname = oForm.GetbyName("txt_vorname")
    inhalt = frm_Feld_Vorname.text
    oLabel = oDialog.GetControl("Label1")
    oLabel.Text = "Der Inhalt des Feldes txt_vorname: " & inhalt
    oDialog.Execute()
end sub
Es wird der Inhalt des Formularfeldes "txt_vorname" im Feld "Label1" des Dialoges ausgegeben.

Den Abschnitt über die Dialoge hatte ich noch nicht entdeckt, ich werde mir das auf jeden Fall auch noch durchlesen.

Vielen Dank für die Unterstützung.

Jensemann

Re: Daten aus einem Datenbank Formular an einen Basic Dialog senden?

Verfasst: Mo 12. Dez 2016, 22:13
von Jensemann
Hallo Robert,
habe gerade das Kapitel über Dialoge quer gelesen, prima, das wird mir bei noch kommenden Dingen mit der Datenbank helfen.

Vielen Dank für Deine Arbeit an dem wirklich sehr guten Handbuch.