Seite 1 von 1

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

Verfasst: Sa 26. Nov 2022, 06:04
von wega
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

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 09:46
von karolus
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… ???

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 10:23
von wega
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

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 10:34
von karolus
Hallo
Hast Du da vielleicht eine Idee?
Nein - draussen ists nebelig, meine Glaskugel mag nicht!

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 12:24
von wega
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

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 14:46
von karolus
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
…

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 17:46
von F3K Total
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

Re: eine beliebige Zeile aus dem Listenfeld auslesen

Verfasst: Sa 26. Nov 2022, 19:13
von wega
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