Keuzelijst waarin meerdere keuzes mogelijk zijn.

Status
Niet open voor verdere reacties.

RadboudAKF

Gebruiker
Lid geworden
3 nov 2010
Berichten
219
Hallo,

Ik heb (nav mijn vraag die ik gisteren stelde; en ook al is beantwoord:thumb:) een formulier gemaakt dat ik (deels) gebruik om criteria (bv. Ruimtenummers of data) aan een query mee te kunnen geven. Dat werkt mooi....

Nu wil ik een keuzelijst gebruiken waarbij het mogelijk is om meerdere keuzes te maken. Ik krijg dat vooralsnog niet voor elkaar. In de keuzelijst die ik nu heb gemaakt zijn meerdere keuzes mogelijk, terwijl ik de "Meervoudige selectie" op "enkelvoudig" heb staan. (aanvankelijk op "uitgebreid" maar dan kan ik maar één keuze maken)

Nu wil ik de keuze(s) uit mijn keuzelijst laten gelden in een query waarin ik als criterium opgeef :

[Forms]![QForm_Ruimten]![Keuzelijst23]

Dit werkt niet....de query geeft geen resultataten.

Doe ik iets fout (da's wel zeker), zie ik iets over het hoofd, of vergeet ik domweg iets?:confused:

Voorbaat dank voor uw antwoord....

Groet,

Jan.
 
Laatst bewerkt:
Een keuzelijst met <Enkelvoudig> betekent alleen maar dat hij multi-waarden toestaat, maar dat je maar één keer hoeft te klikken. <Uitgebreid> houdt in dat je de <Ctrl> toets nodig hebt om meerdere waarden te selecteren. Wil je maar één waarde kunnen selecteren, dan moet <Meervoudige selectie> dus op <Geen> staan. Wellicht een beetje verwarrend, maar de optie <Meervoudige selectie> geeft eigenlijk al aan dat je opties kunt instellen die te maken hebben met het selecteren van meerdere waarden. En dat mag niet (<Geen>) of op twee andere manieren wél.
Probleem met een meervoudige keuzelijst is dat de filtering totaal anders moet. Bij een enkelvoudige optie (Keuzelijst+Geen, of Keuzelijst met invoervak) heb je maar één gefilterde waarde. Bij een ruimere keuze moet je het criterium dus zodanig maken dat alle waarden gefilterd worden. Dat kan op een paar manieren, waarvan ik er 2 uitleg.
Filtering 1 heeft de volgende Criterium opbouw:
Code:
12 Or 14 Or 17 Or 33
of
Code:
"Utrecht" Or "Rotterdam" Or "Delft" Or "Zaandam"
Filtering 2 heeft de volgende Criterium opbouw:
Code:
In(12;14;17;33)
Probleem is dus: hoe lees je uit de keuzelijst welke waarden nu wel en welke niet zijn geselecteerd? Kan alleen met VBA, vrees ik.
 
Oké...als ik het goed begrijp kan ik dus niet (op een relatief eenvoudige manier) de (meerdere) keuzes die ik maak in een keuzelijst 'vertalen' naar een querycriterium. Ik had gehoopt dat dit op dezelfde manier zou werken als een 'keuzelijst met invoervak' (waar ik de keuze wel makkelijk kan sturen naar het criteriumveld in een query). Da's nou jammer...

Ik begrijp dat ik bij een multi-keuze dus in de query een OR-statement dien te gebruiken. Ik vrees dat mij dit nu nog even boven de pet gaat....zeker als ik met VBA zal moeten gaan programmeren. Je zegt zelf al "vrees ik" in jouw antwoord. Welnu, ik vrees met grote vreze... Ik denk dat ik misschien beter (althans voor mij eenvoudiger) op mijn formulier meerdere keuzelijsten met invoervak ga gebruiken (bv. 5 stuks) en dan ook 5 criteriumregels in mijn query zet....die allemaal verwijzen naar dat formulier met ieder een verwijzing naar een andere keuzelijst.

Mocht je me nog op weg kunnen helpen met een klein stukje VBA (om mijn Keuzelijst-optie nog even levend te houden) dan ben ik je zeer dankbaar...als dat niet kan...bedankt voor je antwoord in eerste instantie.

Groet,

Jan Stegeman
 
Ik heb de hele verwerking van het principe in de cursus uitgelegd :). Eventueel kan ik uiteraard de bijbehorende code wel voor je opzoeken. Maar het uitlezen van een keuzelijst is redelijk ingewikkeld. Net zoals het leegmaken ervan overigens als je een nieuwe selectie wilt maken. Een alternatief zou nog kunnen zijn dat je een tabelveld met multi-waarden gebruikt voor je selectie. Daarvan is de structuur al gelijk goed, en die kun je dus wél zonder problemen opnemen in de criterium regel.
 
"tabelveld met multiwaarden" ?

Is dat een veld in een tabel waarin meerdere (soorten) waarden staan? Ik ben even uit het veld geslagen....weet niet goed wat je bedoelt. Kan ik een dergelijke tabel bouwen met behulp van mijn multi-keuze in mijn keuzelijst?? Ik ben even in verwarring...
 
Dat is precies wat ik bedoel. Het is een 'nieuwigheidje' van Access 2007/2010. Ben er in beginsel geen voorstander van, omdat je de normalisatie van je tabel om zeep helpt, maar er is gelukkig een trucje om zo'n tabel toch genormaliseerd te bekijken in een query. En voor meervoudige filteringen is het veld prima geschikt. Maak er maar eens een met de wizard.
 
Laatst bewerkt:
Helaas, Michel.

Dit snap ik echt niet. Ik ga een andere manier zoeken om dit op te lossen. Ik zie in iedere geval geen 'wizard' in 'mijn' access 2007 een tabel te maken met een dergelijk soort veld.

Ik zat nog wel te denken om mijn keuzes uit de Keuzelijst bv. in mijn formulier over te hevelen naar een veld op mijn formulier dat verbonden is met een tabel. Dan kan ik toch met een knop ervoor zorg dat mijn gegevens verplaatst worden naar een tabel (dan wordt de tabel daar met een ADD-statement gevuld met mijn ruimte ID) Die tabel kan dan dienen als onderdeel van mijn query die het criterium levert voor de ruimtes die ik wil zien.

Ik bedoel ongeveer als volgt:

http://www.femda.com/text.aspx?A=vp0963607612

Of is dit ook wat jij bedoelt?

Ik denk dat ik hier op voortbouw....in ieder geval zeer bedankt.

Jan
 
Als het niet in 2007 zit, dan blijkbaar pas vanaf 2010. Ik heb 2007 nooit gehad, maar gebruik dus 2010. Met die mogelijkheid. Sorry dat ik je lekker heb gemaakt met een niet-bestaande optie ;).
Ik gebruik een heel vergelijkbare techniek, maar ik pas 'm gelijk toe in de query. Eigenlijk bouw ik de hele query op in VBA, dus de keuzelijst maakt daar gewoon deel van uit. In mijn techniek heb ik één tijdelijke query, die ik steeds een andere SQL bron geef. Voordeel: de query is overal voor te gebruiken. En het is relatief simpel om de SQL samen te stellen op basis van de keuzes op het formulier.
 
Hallo RadboudAKF

Ik gebruik zelf vaak dit stukje code voor het gebruik van keuzelijsten met meervoudige selectie
Code:
Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim strWhere As String, varItem As Variant
Dim strSQL As String
    
    ' Verzoek om geselecteerde items uit de kzlTEST verwijderen
    ' Indien geen items geselecteerd, dan niets doen
    If Me!kzlTEST.ItemsSelected.Count = 0 Then Exit Sub
    
    ' Loop door de geselecteerde itemcollectie
    For Each varItem In Me!kzlTEST.ItemsSelected
        ' Neem de TestID kolom voor ieder geselecteerd item
        strWhere = strWhere & Me!kzlTEST.Column(0, varItem) & ","
    Next varItem
    ' Verwijder de extra komma uit de "IN" tekenreeks
    strWhere = Left$(strWhere, Len(strWhere) - 1)
        
    'Stel SQL-statement samen
    strSQL = "SELECT * FROM tblTEST WHERE TestID IN (" & strWhere & ")"
    
    ' Open de tblTEST tabel
    Set db = CurrentDb()
    Set rst = db.OpenRecordset(strSQL)
    
    'Als er geen records zijn dan exit
    If rst.EOF Then Exit Sub
    
    Do Until rst.EOF
        rst.Delete
        rst.MoveNext
    Loop
        
    ' Klaar
    rst.Close
    Set rst = Nothing
    Set db = Nothing

uiteraard aanpassen naar eigen database

mvg
John
 
Ik vind dat achteraf weghalen van de overtollige komma(s) een beetje knullig. Dus ik doe het zo:
Code:
    For Each itm In Me.lstLocatie.ItemsSelected
        If Not strC = "" Then strC = strC & ","
        strC = strC & Me.lstLocatie.ItemData(itm)
    Next itm
 
Beste Michel en John64....

Da's een heleboel input. Ik ga hiermee aan de slag en zal na het weekend laten weten of dit 'doet' wat ik voor ogen heb.

Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan