Seite 1 von 1

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

Verfasst: Sa 22. Mär 2025, 21:07
von fcfarkas
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

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

Verfasst: So 23. Mär 2025, 08:33
von RobertG
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.

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

Verfasst: So 23. Mär 2025, 17:43
von fcfarkas
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

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

Verfasst: So 23. Mär 2025, 19:58
von RobertG
Das ist im Base-Handbuch 2408 auf Seite 511.