🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Unterschied Korrelierte Unterabfrage - Unterformular
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Robert,
vielen Dank, das werde ich machen.
Gruß
Freischreiber
vielen Dank, das werde ich machen.
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Robert,
Sehe ich es richtig, daß ich für diese Funktion gar kein Unterformular benötige? (Ich habe einfach bei Art des Listeninhalts "Tabelle" angegeben und bei Listeninhalt "t-auftraege". Die Tabellen stehen über die Auftrags-ID in einer 1:n-Beziehung.)
Kann es so einfach sein oder mache ich was falsch?
Gruß
Freischreiber
im Moment baue ich ein Buchungsformular, es besteht aus einem Tabellenelement, wo untereinander alle Buchungssätze erscheinen sollen. Eine Spalte ist zur Zuordnung der einzelnen Buchungen zur Auftragstabelle. Diese Spalte habe ich in ein Listenfeld umgewandelt, damit ich beim Buchen den betreffenden Auftrag auswählen kann.Nutze Listenfelder für Fremdschlüssel.
Sehe ich es richtig, daß ich für diese Funktion gar kein Unterformular benötige? (Ich habe einfach bei Art des Listeninhalts "Tabelle" angegeben und bei Listeninhalt "t-auftraege". Die Tabellen stehen über die Auftrags-ID in einer 1:n-Beziehung.)
Kann es so einfach sein oder mache ich was falsch?
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Freischreiber,
wenn Du als Grundlage für das Listenfeld eine Tabelle angibst, dann muss in der Tabelle zuerst das stehen, was das Listenfeld anzeigen soll. Das passt in den seltensten Fällen, da die meisten Leute bei Tabellen zuerst den Primärschlüssel festlegen - und den möchtest Du ja gerade nicht sehen.
Mit so einem Listenfeld löst Du eine 1:n-Beziehung auf. Der Inhalt kann in unterschiedlichen Datensätzen hinzugefügt werden. Du brauchst keine Formular - Unterformular - Beziehung.
Gruß
Robert
wenn Du als Grundlage für das Listenfeld eine Tabelle angibst, dann muss in der Tabelle zuerst das stehen, was das Listenfeld anzeigen soll. Das passt in den seltensten Fällen, da die meisten Leute bei Tabellen zuerst den Primärschlüssel festlegen - und den möchtest Du ja gerade nicht sehen.
Mit so einem Listenfeld löst Du eine 1:n-Beziehung auf. Der Inhalt kann in unterschiedlichen Datensätzen hinzugefügt werden. Du brauchst keine Formular - Unterformular - Beziehung.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Robert,
danke, ja, es war ein schöner Sonderfall. Die Tabelle zeigt alle Buchungssätze und durch das Listenfeld in einer Spalte habe ich ja praktisch eine Art Unterformular-Filterung, weil es in der konkreten Zeile nur noch um einen Buchungssatz geht...
Und das Listenfeld sollte direkt die Auftragsnummer anzeigen, die in der Auftragstabelle ja der Primärschlüssel ist. So bin ich sogar ohne Abfrage ausgekommen.
Gruß
Freischreiber
danke, ja, es war ein schöner Sonderfall. Die Tabelle zeigt alle Buchungssätze und durch das Listenfeld in einer Spalte habe ich ja praktisch eine Art Unterformular-Filterung, weil es in der konkreten Zeile nur noch um einen Buchungssatz geht...
Und das Listenfeld sollte direkt die Auftragsnummer anzeigen, die in der Auftragstabelle ja der Primärschlüssel ist. So bin ich sogar ohne Abfrage ausgekommen.
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo,
jetzt habe ich das Formular umgestellt, es basiert jetzt nicht mehr auf der korrelierten Unterabfrage, sondern auf einer einfachen Parameterabfrage der Adressen-Tabelle und Listenfeldern für Anrede und Titel, direkt im Hauptformular MainForm.
Problem daran: Das Textfieldmakro füllt Anrede und Titel nicht mehr aus!
Mein Versuch, das zu beheben, sind die roten Ergänzungen:
Sub Textfieldmakro
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getbyName("MainForm")
oFormKontakt = oForm.getbyname("FormKontakt")
oFormAuftrag = oForm.getbyname("Unterformular Auftraege")
sAuftrag = oFormAuftrag.getString(oFormAuftrag.findcolumn("AuftragID"))
oListenfeldAnrede = oForm.getByName("fmtAnredenID")
sAnrede = oListenfeldAnrede.ValueItemList( oListenfeldAnrede.SelectedItems (0) )
oColumns = oForm.Columns
nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))
select case nKontakt
case 3
scurrentKontakt = "per Fax: " & scurrentKontakt
case 6
scurrentKontakt = "per Mail: " & scurrentKontakt
Case else
scurrentKontakt = ""
end select
REM Pfad zur Vorlage zusammensetzen
Globalscope.BasicLibraries.loadLibrary("Tools")
sURL = oDoc.Parent.URL
sURL = DirectoryNameoutofPath(sURL,"/") & "/"
sURL = sURL & "Briefvorlage.ott"
REM Vorlage öffnen
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
REM Textfelder holen
enumTextfields = newDoc.Textfields.createEnumeration
Do While enumTextfields.hasMoreElements
thisTextfield = enumTextfields.nextElement
If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
sColumnname = thisTextfield.PlaceHolder
if thisTextfield.PlaceHolder = "Kontakt" Then 'Sonderfall vom Unterformular kommt
thisTextfield.Anchor.String = scurrentKontakt
end if
If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
End If
Loop
End Sub
Gleichzeitig versuche ich, die per Maus markierten Werte aus der Liste der Auftragsnummern mit den blauen Ergänzungen in den Brief zu bekommen. Die Auftragsnummern, die zu einem Kunden gehören, kommen über ein Unterformular mit Tabellenfeld aus einer Zwischentabelle.
Die Platzhalter-Felder im Brief lauten <Anrede> und <Auftrag>.
Fehlermeldung gibt es keine mehr, aber die Felder werden auch nicht ausgefüllt, irgendetwas fehlt noch.
Ich vermute, etwas im Bereich "Textfelder holen", aber ich komm nicht drauf, was...
Gruß
Freischreiber
Ergänzung: Das Listenfeld "Anrede" enthält als Listeninhalt SQL: "SELECT "Anrede", "ID" FROM "t-anreden" ORDER BY "Anrede" ASC". Ich weiß aber schon nicht, ob es darauf ankommt, es wird z. B. "Frau" angezeigt im Listenfeld, und das soll auch in den Brief.
jetzt habe ich das Formular umgestellt, es basiert jetzt nicht mehr auf der korrelierten Unterabfrage, sondern auf einer einfachen Parameterabfrage der Adressen-Tabelle und Listenfeldern für Anrede und Titel, direkt im Hauptformular MainForm.
Problem daran: Das Textfieldmakro füllt Anrede und Titel nicht mehr aus!
Mein Versuch, das zu beheben, sind die roten Ergänzungen:
Sub Textfieldmakro
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getbyName("MainForm")
oFormKontakt = oForm.getbyname("FormKontakt")
oFormAuftrag = oForm.getbyname("Unterformular Auftraege")
sAuftrag = oFormAuftrag.getString(oFormAuftrag.findcolumn("AuftragID"))
oListenfeldAnrede = oForm.getByName("fmtAnredenID")
sAnrede = oListenfeldAnrede.ValueItemList( oListenfeldAnrede.SelectedItems (0) )
oColumns = oForm.Columns
nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))
select case nKontakt
case 3
scurrentKontakt = "per Fax: " & scurrentKontakt
case 6
scurrentKontakt = "per Mail: " & scurrentKontakt
Case else
scurrentKontakt = ""
end select
REM Pfad zur Vorlage zusammensetzen
Globalscope.BasicLibraries.loadLibrary("Tools")
sURL = oDoc.Parent.URL
sURL = DirectoryNameoutofPath(sURL,"/") & "/"
sURL = sURL & "Briefvorlage.ott"
REM Vorlage öffnen
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
REM Textfelder holen
enumTextfields = newDoc.Textfields.createEnumeration
Do While enumTextfields.hasMoreElements
thisTextfield = enumTextfields.nextElement
If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
sColumnname = thisTextfield.PlaceHolder
if thisTextfield.PlaceHolder = "Kontakt" Then 'Sonderfall vom Unterformular kommt
thisTextfield.Anchor.String = scurrentKontakt
end if
If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
End If
Loop
End Sub
Gleichzeitig versuche ich, die per Maus markierten Werte aus der Liste der Auftragsnummern mit den blauen Ergänzungen in den Brief zu bekommen. Die Auftragsnummern, die zu einem Kunden gehören, kommen über ein Unterformular mit Tabellenfeld aus einer Zwischentabelle.
Die Platzhalter-Felder im Brief lauten <Anrede> und <Auftrag>.
Fehlermeldung gibt es keine mehr, aber die Felder werden auch nicht ausgefüllt, irgendetwas fehlt noch.
Ich vermute, etwas im Bereich "Textfelder holen", aber ich komm nicht drauf, was...
Gruß
Freischreiber
Ergänzung: Das Listenfeld "Anrede" enthält als Listeninhalt SQL: "SELECT "Anrede", "ID" FROM "t-anreden" ORDER BY "Anrede" ASC". Ich weiß aber schon nicht, ob es darauf ankommt, es wird z. B. "Frau" angezeigt im Listenfeld, und das soll auch in den Brief.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Freischreiber,
die Felder in Deinem Formular heißen wie die Textfelder. Wenn Du in Deinem Formular die Informationen nur in einem Listenfeld hast, dann wird das Makro höchstens die Werte (Fremdschlüsselwert) aus der zugrundliegenden Tabelle lesen, nciht aber den angezeigten Inhalt. Für die Textfelder muss der Inhalt so aufbereitet sein wie z.B. für einen Bericht: alles, was Du in der Abfrage siehst, kann übernommen werden, nicht alles, was Du im Formular siehst, da dort eben Listenfelder vorhanden sind.
Gruß
Robert
die Felder in Deinem Formular heißen wie die Textfelder. Wenn Du in Deinem Formular die Informationen nur in einem Listenfeld hast, dann wird das Makro höchstens die Werte (Fremdschlüsselwert) aus der zugrundliegenden Tabelle lesen, nciht aber den angezeigten Inhalt. Für die Textfelder muss der Inhalt so aufbereitet sein wie z.B. für einen Bericht: alles, was Du in der Abfrage siehst, kann übernommen werden, nicht alles, was Du im Formular siehst, da dort eben Listenfelder vorhanden sind.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Robert,
was bedeutet das für mich?
Die Funktion "selecteditem" oder "selecteditems" hatte ich so verstanden, daß das Angezeigte ausgelesen wird. Für den tatsächlich gespeicherten Wert gibt es doch "currentvalue"?
Gruß
Freischreiber
PS: Das mit selecteditems hatte ich hier her: http://de.openoffice.info/viewtopic.php ... 15#p244242 bzw. aus deinem Makro-Handbuch.
was bedeutet das für mich?
Muß ich etwas umbenennen?die Felder in Deinem Formular heißen wie die Textfelder.
Heißt das, es geht gar nicht, den am Bildschirm angezeigten Inhalt des Listenfelds ins Textfeld zu bringen, oder heißt es, ich muß die Abfrage, die z. B. aus der gespeicherten "2" eine angezeigte "Frau" macht, zusätzlich noch im Makro unterbringen?Für die Textfelder muss der Inhalt so aufbereitet sein wie z.B. für einen Bericht
Die Funktion "selecteditem" oder "selecteditems" hatte ich so verstanden, daß das Angezeigte ausgelesen wird. Für den tatsächlich gespeicherten Wert gibt es doch "currentvalue"?
Gruß
Freischreiber
PS: Das mit selecteditems hatte ich hier her: http://de.openoffice.info/viewtopic.php ... 15#p244242 bzw. aus deinem Makro-Handbuch.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Das hier sollte ein Minimalbeispiel werden. Aber ich krieg schon das Makro nicht zum Laufen 

- Dateianhänge
-
- Neue Datenbank.zip
- (11.09 KiB) 129-mal heruntergeladen
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Freischreiber,
das Beispiel hat nichts mit dem Druck über Textfelder zu tun. Das Makro ist außerdem an "Taste gedrückt" gebunden. So kannst Du das Makro nur mit der Tastatur starten. Binde es an das Ereignis "Aktion ausführen".
Du ermittelst über "selecteditem" ganz richtig den Wert, den ein Listenfeld anzeigt. Allerdings musst Du dazu auf den Controller zugreifen. Nur liest das Makro mit den Textfeldern ja nicht diesen Wert, sondern den Wert, der in der Tabelle steht, die Deinem Formular zugrunde liegt. Und da gibt es nicht das Feld "Anrede", sondern vielleicht das feld "Anrede_ID".
Und wenn Du die Textfelder umbenennen würdest, dann würdest Du da zwar einen Eintrag sehen, aber das wäre schließlich "Anrede_ID" und nicht der Text dazu.
Gruß
Robert
das Beispiel hat nichts mit dem Druck über Textfelder zu tun. Das Makro ist außerdem an "Taste gedrückt" gebunden. So kannst Du das Makro nur mit der Tastatur starten. Binde es an das Ereignis "Aktion ausführen".
Code: Alles auswählen
Sub SelectListbox
Dim oForm, oListbox As Object
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0)
oListbox = oForm.getByName("Listenfeld 1")
oController = oDoc.getCurrentController()
oView = oController.getControl(oListbox)
print "Angezeigter Inhalt: " & oView.SelectedItem
print "Gewähler Eintrag: " & oListbox.getCurrentValue
End Sub
Und wenn Du die Textfelder umbenennen würdest, dann würdest Du da zwar einen Eintrag sehen, aber das wäre schließlich "Anrede_ID" und nicht der Text dazu.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- * LO-Experte *
- Beiträge: 832
- Registriert: Fr 28. Mär 2014, 10:41
Re: Unterschied Korrelierte Unterabfrage - Unterformular
Hallo Robert,
ja! genau!
Wenn ich den gewählten Listenfeldinhalt drucken kann, muß ich ihn doch auch in eine Variable bringen und an das Textdokument senden können? Das kann doch nicht unmöglich sein?
Gruß
Freischreiber
ja! genau!
Wenn ich den gewählten Listenfeldinhalt drucken kann, muß ich ihn doch auch in eine Variable bringen und an das Textdokument senden können? Das kann doch nicht unmöglich sein?
Das ist doch genau mein Problem und der Grund, warum ich mit den roten Änderungen hantierte: Wie bringe ich das Textfieldmakro dazu, diesen angezeigten Wert zu lesen?Nur liest das Makro mit den Textfeldern ja nicht diesen Wert,
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.