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

🙏 DANKE >> << DANKE 🙏

>> 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

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: 2957
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: 2957
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:
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 ❤️

Antworten