PDA

Vollständige Version anzeigen : ListBox, Inhalt übernehmen


Charleroi
20.06.2001, 17:19
Hallo,
wie kann ich die gewählten Elementen in einem ListBox, in anderen übertragen: Welche Funktion kann man benutzen?

Vielen Dank!

Charleroi

Wola
20.06.2001, 20:27
Hi und 'nen guten Abend,

auf die markierten Zeilen in der Listbox greifst Du am Besten so zu

'Variable
Dim Element As Variant

'Nur markierte Datensätze durchlaufen
For Each Element In Me!lstBoxRecords.ItemsSelected
'Mach was mit dem Wert der gebunden Spalte in der markierten Zeile
Xyz = Me!lstBoxRecords.ItemData(Element)
Next

Wenn Du auf einzelne Spalten (nicht nur auf die gebundene) zugreifen möchtest, verwendest Du gleichzeitig die Column-Eigenschaft:

'Spalte 1
WertInSpalte1 = Me!lstBoxRecords.Column(0, Element)

'Spalte 5
WertInSpalte5 = Me!lstBoxRecords.Column(4, Element)

Dran denken, daß die Spaltenzählung mit 0 losgeht, d.h. Spalte 1 hat den Index 0, Spalte 2 den Index 1, usw.

SO und jetzt kommst drauf an, wie Du die Datenquelle in der Ziel-Listbox deklarieren willst.

Wenn Du eine Werte-Liste verwenden möchtest, setzt Du die einzelnen Zeilen zusammen aus

Me!lstBoxRecords.Column(0, Element) & ";" &
Me!lstBoxRecords.Column(1, Element) & ";" &
Me!lstBoxRecords.Column(2, Element)

wobei Du den Spaltenindex nur für die gewünschten Spalten verwendest.

Wenn Du alle Spaltenwerte übertragen willst, kannst Du auch hierfür eine Schleife (innerhalb der obigen) verwenden und darin über alle Spalten 0 bis SpaltenMax-1 laufen.

Wenn Deine Datenherkunft eine Sql-Anweisung sein soll, holst Du Dir mit oben gesagtem die relevanten Werte aus den markierten Zeilen und verwendest diese dann als WHERE-Bedingung (Filter)

Also: Innerhalb der Schleife machst Du so etwas wie
SqlWhere = SqlWhere & "," & SpaltenWert

Dran denken, daß hierbei der Datentyp des Spaltenwertes manchmal wichtig ist (Datum = amerikanisches Format, Kommazahlen = Punkt anstatt Komma verwenden, String mit einfachen Anführungszeichen ' verwenden)

Die Sql-Anweisung dann zusammenstellen

Sql = "SELECT x, y, z " & _
"FROM ... T1 ...L-I-R JOIN .... ON ... " & _
"WHERE Feld IN (" & Mid(SqlWhere,2) & ") " & _
"ORDER BY Srt1, Srt2, ....;"

Das weist Du dann der Ziel-Listbox zu
LstBoxZiel.RowSource = Sql

Jetzt mußt Du Dir nur noch ein Event auswählen, wann die Übertragung stattfinden soll:
bei einem ButtonName_Click
oder bei lstBoxRecords_AfterUpdate oder lstBoxRecords_Click oder ...

Grüße wola