BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] eine beliebige Zeile aus dem Listenfeld auslesen

Alles zur Programmierung im LibreOffice.
Antworten
wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

[gelöst] eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von wega » Sa 26. Nov 2022, 06:04

Hallo zusammen,

ich habe ein Listenfeld, das ich ListBox_Auswahl genannt habe,
da ich hier auf einen beliebigen Datensatz per Mauszeiger zugreifen möchte.

Wenn ich bei meinem Konstrukt eine Listenfeldzeile auswähle erscheint bei mir
die Meldung;

Unzulässiger Wert oder Datentyp.
Index außerhalb des definierten Bereichs.

Ich habe das Forum schon durchsucht und wahrscheinlich nicht die richtige Frage gestellt.
Somit habe ich meine Anfrage ans Forum gestellt.

Hier noch mein Quellcode zur Listenfeld (ListBox_Auswahl)

Code: Alles auswählen

Sub Listbox_lesen
	dim oDoc as object
	dim odrawpage as object
	Dim oform as object
	dim oList as Object
	dim auswahlListe()
	dim auswahlSelektion
	dim auswahlstring as String
	dim auswahlsatz as Integer
	dim aform as String
	dim aMedID as String
	
	oDoc = thisComponent 'das Dokument
	odrawpage = oDoc.Drawpage 'Zeichenfläche des Formulars einer Datenbank
	oForm = odrawpage.Forms.getByName("Formular_Start") 'Das Formular selbst
	oList = oForm.getByName("ListBox_Auswahl") 'Das Kontrollelement
	auswahlListe = oList.stringItemList
	auswahlSelektion = oList.SelectedItems
	auswahlstring = auswahlListe(auswahlSelektion(0))
	msgbox auswahlstring
	aMedID = rTrim(right(auswahlstring,10))
	aform = oForm.getName("ListBox_Auswahl")
	msgbox aMedID	
	formulardatensatz_suchen(aForm,aMedID)
end Sub
Wo liegt der Hund begraben?

Mit freundlichem Gruß
Werner
Zuletzt geändert von wega am Sa 26. Nov 2022, 19:13, insgesamt 1-mal geändert.

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von karolus » Sa 26. Nov 2022, 09:46

vergleiche mal :

Code: Alles auswählen

oList = oForm.getByName("ListBox_Auswahl")  
……getByName

Code: Alles auswählen

aform = oForm.getName("ListBox_Auswahl")
……getName
ich vermute die Methode gibts gar nicht, und sie müsste so heissen wie oben, dann aber wäre der Aufruf unnötig, weil das selbe Objekt ja schon an »oList« gebunden ist.

Ausserdem scheinst du in den letzten Zeilen zu versuchen ein Element zu finden, das weiter oben bereits in der Variablen »auswahlstring« steckt… ???
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von wega » Sa 26. Nov 2022, 10:23

hallo karolus,

erst mal Danke für Deine Antwort.

Du hast recht, "aForm" ist doppelt gemoppelt, da "oList" schon
definiert ist. -> So weit OK.

Was mir aber nicht gelingen will, ist den Inhalt von "auswahlString" anzuzeigen.

Wie kann ich mir eine Zeile aus der Listbox_Auswahl auslesen?

Hast Du da vielleicht eine Idee?

Mit Gruß
Werner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von karolus » Sa 26. Nov 2022, 10:34

Hallo
Hast Du da vielleicht eine Idee?
Nein - draussen ists nebelig, meine Glaskugel mag nicht!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von wega » Sa 26. Nov 2022, 12:24

Hallo zusammen,

mit der Anweisung

Code: Alles auswählen

	anzahl =  oList.itemcount
	msgbox anzahl
kann man die Anzahl Einträge aus dem Listenfeld erfahren.

Hingegen wird

Code: Alles auswählen

	auswahlstring = oList.SelectedItem
	msgbox auswahlstring
nicht als Anweisung erkannt.
Welche Anweisung ersetzt bei Libreoffice das "SelectedItem" ?

Mit Gruß
Werner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von karolus » Sa 26. Nov 2022, 14:46

Hallo
Wie bereits angemerkt kann ich von hier aus nicht sehen was da noch falsch läuft, für gewöhnlich aktiviere ich bei sowas einfach mri und platziere an geegneter Stelle im Code z.B.

Code: Alles auswählen

…
mri oList
…
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von F3K Total » Sa 26. Nov 2022, 17:46

Moin,
ich denke das hängt davon ab, wie das Listenfeld gefüllt wird.
Es gibt Listenfelder, da werden die Einträge in den Eigenschaften des Listenfeldes von Hand eingetippt, Beispieldatei anbei. Dann funktioniert auch dein Code.
Es gibt Listenfelder, die sich ihre Listeneinträge z.B. über eine SQL-Abfrage aus einer Tabelle holen.
Dann kann das anders aussehen.
Es wäre also gut, wenn der Fragesteller eine Beispieldatei hochladen würde.

Gruß R
Dateianhänge
Ungebundenes_Listenfeld_auslesen.odt
(11.37 KiB) 51-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Beitrag von wega » Sa 26. Nov 2022, 19:13

Hallo R,

auch Dir vielen Dank für Deine Antwort.

Nach vielem Probieren habe ich es geschafft eine Zeile
aus dem Listenfeld zu selektieren, auszulesen und einen Teilstring zu separatisieren.

Im Formular ist es wichtig die Listenfeldeigenschaft "Nur lesen" auf > nein < zu stellen.
Im Programmteil, also BASIC gibt es folgendes zu beachten:

Code: Alles auswählen

	oDoc = thisComponent 'das Dokument
	odrawpage = oDoc.Drawpage 'Zeichenfläche des Formulars einer Datenbank
	oForm = odrawpage.Forms.getByName("Formular_Start") 'Das Formular selbst
	oList = oForm.getByName("ListBox_Auswahl") 'Das Kontrollelement
	auswahlstring = oList.currentValue()
	'msgbox auswahlstring
	auswahlID = rTrim(right(auswahlstring,20))
	'msgbox auswahlID
So kommt man dann an die Listenfeldzeile und an den gesuchten Teilstring.

Danke für eure Anregungen
Mit freundlichem Gruß
Werner

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
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