Discussion:
keuzelijst met meerdere keuzes
(te oud om op te antwoorden)
Maaike
2003-09-10 08:29:45 UTC
Permalink
In een formulier heb ik een keuzelijst waaruit meer dan 1
item gekozen kan worden. Is het mogelijk deze items weer
te geven in bijvoorbeeld een apart veld, zodat je kan zien
welke opties zijn gekozen, en zodat je hierop (op elk item
afzonderlijk) kan selecteren.

Ik kom niet verder dan dat je via VBA de opties kan zien
in het VBA-scherm met Debug.Print, maar daar heb je niets
aan in je formulier.

Weet iemand hiervoor een oplossing?
Maaike
R. Lansink
2003-09-10 09:54:34 UTC
Permalink
Misschien kun je twee lijsten naast elkaar maken en de
geslecteerde waarden kopieeren naar de andere lijst...
-----Original Message-----
In een formulier heb ik een keuzelijst waaruit meer dan 1
item gekozen kan worden. Is het mogelijk deze items weer
te geven in bijvoorbeeld een apart veld, zodat je kan
zien
welke opties zijn gekozen, en zodat je hierop (op elk
item
afzonderlijk) kan selecteren.
Ik kom niet verder dan dat je via VBA de opties kan zien
in het VBA-scherm met Debug.Print, maar daar heb je niets
aan in je formulier.
Weet iemand hiervoor een oplossing?
Maaike
.
Jooris Keirse
2003-09-10 16:29:20 UTC
Permalink
Maak een tekstvak (txtGemaakteKeuzes).
Bij After Update van de keuzelijst:
txtGemaakteKeuzes = txtGemaakteKeuzes & "; " & cboNaamkeuzelijst.Column(1)

Waarbij Column1 de kolom is van de keuzelijst waarin de waarde staat die
moet zichtbaar zijn in het tekstvak (telling begint vanaf 0)
John Kopmels
2003-09-10 17:19:46 UTC
Permalink
Is het mogelijk deze items weer te geven in een apart veld,
zodat je kan zien > welke opties zijn gekozen, en zodat je
hierop (op elk item afzonderlijk) kan selecteren.
loop door de ItemsSelected collectie

Private Sub lstArtikel_AfterUpdate()
'
Dim vItem As Variant, s As String
'
With Me.lstArtikel
For Each vItem In .ItemsSelected
s = s & "," & Chr(34) & .ItemData(vItem) & Chr(34)
Next vItem
End With
'
Me.txtSelected = Mid(s, 3)
'
End Sub

aangenomen dat de listbox 'lstArtikel' heet en het tekstvak
'txtSelected', verder dat de items die je selecteerd tekst zijn
Jooris Keirse
2003-09-12 11:42:14 UTC
Permalink
Vergeten Value bij te zetten; onderstaande code werkt dus wel

Private Sub lstProv_AfterUpdate()
txt1.Value = txt1 & " " & lstProv.Column(1)
End Sub
Maaike
2003-09-12 13:28:44 UTC
Permalink
HET WERKT !! DANK
-----Original Message-----
Vergeten Value bij te zetten; onderstaande code werkt dus
wel
Private Sub lstProv_AfterUpdate()
txt1.Value = txt1 & " " & lstProv.Column(1)
End Sub
.
Maaike
2003-09-12 14:09:25 UTC
Permalink
Oeps, iets te vroeg gejuicht.

De tekst is voor elk record hetzelfde, en bij sluiten van
het formulier wordt het tekstvak geleegd. Dit is niet de
bedoeling. Is hiervoor ook een oplossing?
-----Oorspronkelijk bericht-----
HET WERKT !! DANK
-----Original Message-----
Vergeten Value bij te zetten; onderstaande code werkt
dus
wel
Private Sub lstProv_AfterUpdate()
txt1.Value = txt1 & " " & lstProv.Column(1)
End Sub
.
.
John Kopmels
2003-09-12 20:13:57 UTC
Permalink
Jouw oplossing werkt in Access 2000, maar in 97
helaas niet. Volgens de help moet ik dan nog een
control declareren, zodat je krijgt
For Each vItem In ctl.ItemsSelected
maar ik blijf foutmeldingen krijgen !!??
In Access 97 werkt dit gewoon, net ff getest in zowel 2000
als 97,je zou de code gewoon moeten kunnen over kopiëren

ps in een multi-select situatie *moet* je
met de ItemsSelected collectie werken !

als je ctl gebruikt zal je deze eerst moeten declareren en toewijzen:

Dim ctl As Control, vItem As Variant, s As String
Set ctl = Me.lstArtikel
'
With ctl
For Each vItem In .ItemsSelected
s = s & "," & Chr(34) & .ItemData(vItem) & Chr(34)
Next vItem
End With
'
Me.txtSelected = Mid(s, 3)
Set ctl = Nothing

maar nogmaals dat hoeft niet, heb je de namen goed aangepast
aan de jouwe en is de BoundColumn wel van het type string ?
ItemData werkt alleen met de BoundColumn niet met de volgende

als de BoundColumn b.v. een ID veld is en je wilt de waarde uit de
tweede kolom ophalen (column(1)) dan wordt het (mits type tekst)

With ctl
For Each vItem In .ItemsSelected
s = s & "," & Chr(34) & .Column(1, vItem) & Chr(34)
Next vItem
End With
'
Me.txtSelected = Mid(s, 3)
Set ctl = Nothing

en het tekstvak is leeg na sluiten v/h form ja
dit omdat het een ongebonden tekstvak is

wil je het opslaan dat moet je het veld binden aan een veld
in de recordsource of op een andere manier opslaan

groetjes -- John

Loading...