🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Voraussetzungen um ListSource mit Makro zu setzen/überschreiben

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
fcfarkas
! Supporter - Spende !
Beiträge: 10
Registriert: Sa 22. Mär 2025, 20:20

[gelöst] Voraussetzungen um ListSource mit Makro zu setzen/überschreiben

Beitrag von fcfarkas » Sa 22. Mär 2025, 21:07

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
Zuletzt geändert von fcfarkas am Di 22. Apr 2025, 12:04, insgesamt 1-mal geändert.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben

Beitrag von RobertG » So 23. Mär 2025, 08:33

Aus dem Base-Handbuch:

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
Der Eintrag für die Daten ist ein Array. Deswegen stSql(0) als erster (und in diesem Fall einziger) Eintrag in das Array.
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

fcfarkas
! Supporter - Spende !
Beiträge: 10
Registriert: Sa 22. Mär 2025, 20:20

Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben

Beitrag von fcfarkas » So 23. Mär 2025, 17:43

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

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Voraussetzungen um ListSource mit Makro zu setzen/überschreiben

Beitrag von RobertG » So 23. Mär 2025, 19:58

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


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.



Antworten