Hallo Robert,
vielen Dank für die Hinweise.
Am 15.01.20 um 15:35 schrieb Robert Großkopf:
Hallo Thomas, Hallo Gerhard,
die Struktur ohne Makros läuft nur über Hauptformular - Unterformular -
UnterUnterformular. Ohne Listenfelder wären im Hauptformular und im
Unterformular nur Tabellenkontrollfelder, die die beschriebenen Orte und
Räume enthielten. Deren eingestellter Inhalt wird dann in das
Unter-Unterformular übernommen.
Diese Tabellenkontrollfelder brauchen ja keine Neueingabe von Daten zu
enthalten, da vermutlich die Räume bereits feststehen. Sonst gäbe es ja
auch mit Listenfeldern Probleme.
Ja, Orte und Räume sind schon in separaten Tabellen vorhanden. Die
Ortseingabe funktioniert und es geht um die Raumeingabe, wobei eben nur
die passenden Räume angeboten werden sollen. Ich denke, mit Unter- und
UnterUnterformular könnte es gehen und werde das zuerst probieren.
Danke
Thomas
Dann ist noch die Möglichkeit, das Hauptformular als Filterformular mit
einem Listenfeld zu versehen. Ohne Makro braucht es hier aber schon
einen Button zusätzlich, der dann dafür sorgt, dass der Inhalt
weitergegeben wird.
Im Handbuch steht im Kapitel "Makros" bei den Eigenschaften für
Listenfelder dieses Makro:
---------------
SUB Listenfeldfilter
DIM stSql(0) AS STRING
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oFeld = oForm.getByname("Listenfeld")
stSql(0) = "SELECT ""Name"", ""ID"" FROM ""Filter_Name"" ORDER BY ""Name"""
oFeld.ListSource = stSql
oFeld.refresh
END SUB
-----------
Sobald also der Ort vorgegeben wurde müsste der Code für das Listenfeld
entsprechend unter stSql(0) eingetragen werden. Also, wie in gerhards
Beispiel,
"SELECT ""Raum"", ""ID_Raum"" FROM ""Räume"" WHERE ""ID_Ort"" = '1'
ORDER BY ""Raum"""
Die '1' für die ID_Ort muss dann aus dem Feld für den Ort gelesen
werden. Das geht dann auch in Kurzform, wenn beide Listenfelder im
gleichen Formular liegen:
---------------
SUB Listenfeldfilter(oEvent AS OBJECT)
DIM stSql(0) AS STRING
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oStartFeld AS OBJECT
oFeldStart = oEvent.Source.Model
inIDOrt = oFeldStart.CurrentValue
oForm = oFeldStart.Parent
oFeld = oForm.getByname("Listenfeld")
stSql(0) = "SELECT ""Raum"", ""ID_Raum"" FROM ""Räume"" WHERE ""ID_Ort""
= '"+inIDOrt+"' ORDER BY ""Raum"""
oFeld.ListSource = stSql
oFeld.refresh
END SUB
-----------
Gruß
Robert
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.