Hallo werte Kommilitonen
Bitte als LO(Version 25.2.1.2)-Anfänger in BASE um Unterstützung:
Habe eine DB erstellt und habe in einem Formular, das eine Tabelle A referenziert, ein Listenfeld
(
Eigenschaften:
Datenfeld ist Key der Tabelle A,
Art des Listeninhalts ist SQL und
Listeninhalt ist ein Standard-SQL-Abfrage einer Tabelle B
)
platziert, dessen initiale SQL-Abfrage ich jedoch Beim Laden-Ereignis des Formulars mit einer anderen, komplexeren SQL-Abfrage über mehrere Tabellen ersetzen will.
Mein Basic-Makro führt zum "BASIC-Laufzeitfehler. Objektvariable nicht belegt."
Wie muss ich mein Listenfeld-Objekt 'belegen'/'initialisieren'/'vorbereiten'?
Mein Makro sieht zurzeit wie folgt aus:
REM ***** BASIC *****
SUB Main (oEvent AS OBJECT)
DIM oForm AS OBJECT
DIM oLF AS OBJECT
DIM sSql AS STRING
oForm = oEvent.Source
oLF = oForm.getByName("LF1")
sSql = "SELECT […] FROM […] WHERE […]" = " & CStr([…])
oLF.listSourceType = 3
oLF.ListSource = sSql 'wirft Fehlermeldung
oLF.refresh()
END SUB
Vorab vielen Dank.
fcfarkas
🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
[gelöst] Voraussetzungen um ListSource mit Makro zu setzen/überschreiben
[gelöst] Voraussetzungen um ListSource mit Makro zu setzen/überschreiben
Zuletzt geändert von fcfarkas am Di 22. Apr 2025, 12:04, insgesamt 1-mal geändert.
Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben
Aus dem Base-Handbuch:
Der Eintrag für die Daten ist ein Array. Deswegen stSql(0) als erster (und in diesem Fall einziger) Eintrag in das Array.Code: Alles auswählen
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
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
Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben
Hallo RobertG
Vielen Dank für die Lösung.
Hätte ich im Debugger die Listenfeld-Eigenschaft ListSource gründlicher angeschaut, wäre ich selbst darauf gekommen. Sorry für den unnötigen Nervenverschleiss.
Darf ich wohl noch um die Seitenzahl im Base-Handbuch bitten? Habe diese vor und zurück geblättert aber nichts derartiges gefunden.
Beste Grüsse, fcfarkas
Vielen Dank für die Lösung.
Hätte ich im Debugger die Listenfeld-Eigenschaft ListSource gründlicher angeschaut, wäre ich selbst darauf gekommen. Sorry für den unnötigen Nervenverschleiss.
Darf ich wohl noch um die Seitenzahl im Base-Handbuch bitten? Habe diese vor und zurück geblättert aber nichts derartiges gefunden.
Beste Grüsse, fcfarkas
Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben
Das ist im Base-Handbuch 2408 auf Seite 511.
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
An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️