PDA

Vollständige Version anzeigen : List Box?? Steuerelement mit Mehrfachauswahl


Madlen_Müller
08.08.2001, 12:17
Hallo,
ich habe eigentlich ein ganz einfaches Problem.
Welches Steuerelement gibt mir denn die Möglcichkeit mehrere Auswahlen in das Feld zu schreiben. Zum Beispiel ein Feld namens "Obst" mit den Auswahlmöglichkeiten: Birnen, Äpfel, Bananen, Kiwis. Der User soll seinem Geschmack nach alle, keine oder nur einige davon selektieren können. In HTML gibts dafür List-Boxen, wie ist das in Access?

Danke für eure Mühen!

flori
08.08.2001, 12:41
Hallo!

In Access kannst du dafür Listenfelder benutzen. Denen hinterlegst du eine Tabelle, Abfrage oder einige Werte in den Eigenschaften.
Bei den Eigenschaften musst du auch noch angeben, ob eine Mehrfachauswahl möglich sein soll. Das findest du unter "Andere" und da hast die Möglichkeiten "keine", "einzeln" und "erweitert".

Keine: wohl logisch, oder?
einzeln: werden ausgewählt oder aufgehoben wenn mit der maus drauf geklickt wird
erweitert: kannst du mehrere gleichzeitig mit auswählen

Denke mal für dein Anliegen reicht einzeln.
Wenn es nicht klappen sollte, guck in der Hilfe von Access nach unter Mehrfachauswahl.

Mohrrübe
08.08.2001, 13:14
Ja, danke.
Leider werden nun die ausgewählten Elemente nicht in dem Feld gespeichert, das mit der list-Box verbunden ist.
Woran könnte das denn liegen?
Ich will eigentlich nur, dass die einzelnen ausgewählten Werte durch Komma und Semikolon getrennt in dem dafür vorgesehenen Feld ankommen!

flori
08.08.2001, 13:29
Probier mal:

Sub AlleAusgewähltenDaten()
Dim frm As Form, ctl as Control
Dim VarElement As Variant, IntI As Integer

Set frm = Forms!Formularname
Set ctl = frm!Steuerelementname
For each varElement In ctl.Itemsselected
For intI = 0 To ctl.ColumnCount -1
Debug.print ctl.column(intI, varElement)
Next intI
Debug.print
Next varElement
End Sub

Probier es einfach mal aus, ich habe keine Ahnung, ob es funktioniert, habe es noch nie selber ausprobiert.

A.S.
09.08.2001, 10:41
on Top damit

Madlen_Müller
09.08.2001, 10:48
danke! Das Problem besteht immernoch, die daten der Mehrfachauswahl kommen nicht in dem damit Verlinkten Feld an.

Birgit Dannenberg
09.08.2001, 10:51
Dann lies doch bitte mal meine Antwort in Deinem anderen Thread!!!
(da siehst Du wozu sowas führt...)

Birgit

A.S.
09.08.2001, 10:55
Hallo Madlen,

bei Mehrfachselektion geht das IMHO so nicht. Du mußt, entsprechend dem Vorschlag von Flori, ein anderes Steuerelement auf dem Form erstellen, welches an das Feld gebunden ist, in dem die Daten die in der Listbox selektiert werden erscheinen sollen
im Ereignis "Beim Klicken" der ListBox, wie im Coding von Flori dargestellt, die ItemsSelected-Auflistung der Listbox durchlaufen und aus den Elementen den Steuerelementinhalt (.Value-Eigenschaft) des neuen Steuerelemtentes generieren.

Es ist aber die Frage, in welcher Form sollen die selektierten Daten gespeichert werden? Willst Du eine seperate Hintergrundtabelle damit füllen oder diese in ein Textfeld speichern?

Je nach dem müßte man die Vorgehensweise gestalten.

Gruß

Arno

Mohrrübe
09.08.2001, 12:32
Hallo Arno, danke für deine Hilfe. Leider ist das Forum der Meinung dass ein Benutzer mit meinem Benutzernamen nicht existiert, deshalb musste ich mir einen neuen Account zulegen.

Die ausgewählten Werte sollen direkt in einem Textfeld durch kommas getrennt landen, ohne noch mal irgendwo anders zwischen gespeichert zu werden.

In meiner jugendlichen Einfalt war ich auch der Meinung, wenn schon ein Steuerelement die Möglichkeit der Mehrfachselektion bietet, dass man dies dann auch einfach so verwenden kann. Da scheine ich mich getäuscht zu haben.

A.S.
09.08.2001, 12:48
Hallo Madlen,

über wie viele Spalten verfügt denn das Listenfeld und in welcher Spalte stehen die zu speichernden Daten?

Gruß

Arno

Mohrrübe
09.08.2001, 13:16
Mein Listenfeld hat 1 Spalte und 9 Reihen, sieht also fast aus wie ein ganz normales PullDown Menü. Die Daten habe ich von Hand eingetragen werden also nicht irgendwo ausgelesen, da ich sie dem User fest vorgeben muss.

A.S.
09.08.2001, 13:24
Hallo Madlen,

bei untenstehendem Coding bin ich von folgenden Voraussetzungen ausgegangen: die Eigenschaft Name des Listenfeldes ist auf "Listenfeld" eingestellt
die Eigenschaft Name des Textfeldes ist auf "Textfeld" eingestellt


Wenn die Benennung der beiden Steuerelemente hiervon abweicht, mußt Du das untenstehende Coding dementsprechend anpassen. (Beim zuweisen der Steuerelemente an die Controlvariablen.)

<FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> Listenfeld_Click()
<FONT COLOR=#000080>Dim</FONT> ctlSrc <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Control</FONT> <FONT COLOR=#008000>' Controlvariable für das Listenfeld</FONT>
<FONT COLOR=#000080>Dim</FONT> ctlTrg <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Control</FONT> <FONT COLOR=#008000>' Controlvariable für das Textfeld</FONT>
<FONT COLOR=#000080>Dim</FONT> varElement <FONT COLOR=#000080>As</FONT> Variant <FONT COLOR=#008000>' Variable zum durchlaufen der</FONT>
<FONT COLOR=#008000>' ItemsSelected-Auflistung</FONT>

<FONT COLOR=#000080>Set</FONT> ctlSrc = Me.Listenfeld <FONT COLOR=#008000>' Das Listenfeld der entsprechenden</FONT>
<FONT COLOR=#008000>' Controlvariable zuweisen</FONT>
<FONT COLOR=#000080>Set</FONT> ctlTrg = Me.Textfeld <FONT COLOR=#008000>' Das Textfeld der entsprechenden</FONT>
<FONT COLOR=#008000>' Controlvariable zuweisen</FONT>

ctlTrg.Value = "" <FONT COLOR=#008000>' Das Zielfeld initialisieren</FONT>

<FONT COLOR=#008000>' Die ItemsSelected-Auflistung durchlaufen (For-Schleife)</FONT>
<FONT COLOR=#000080>For</FONT> <FONT COLOR=#000080>Each</FONT> varElement <FONT COLOR=#000080>In</FONT> ctlSrc.ItemsSelected

<FONT COLOR=#008000>' Alle ausgewählten Elemente werden im Zielfeld aneinandergefügt</FONT>
ctlTrg.Value = ctlTrg.Value & Iif(ctlTrg.Value="";"";", ") _
& ctlSrc.Column(0, varElement)

<FONT COLOR=#000080>Next</FONT> varElement

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT> <FONT COLOR=#008000>' Listenfeld_Click</FONT></FONT>

Zu Deiner Information: Beim aneinanderfügen der selektierten Inhalte Deines Listenfeldes wird die Eigenschaft "Column" des Feldes angesprochen. Als Spaltenindex wird hier 0 verwandt, da das Steuerelement die Spaltenauflistung mit dem Wert 0 beginnend indiziert. Deine 1. Spalte hat also den Indexwert 0 in der Columnsauflistung etc.

------------------
HTH

Arno