meerdere criteria in een veld met meerdere waarden in query

Status
Niet open voor verdere reacties.

jvondermans

Gebruiker
Lid geworden
14 feb 2005
Berichten
75
Ik heb een query met daarin een aantal velden met meerdere waarden (vanuit sharepoint).

Nu wil ik dat ik in een formulier meerdere waarden kan aanvinken waaraan de selectie moet voldoen en dat dan al die criteria worden gebruikt bij het zoeken naar die waarden.
dit is wat ik nu heb en dat werkt prima, maar de criteria "saus" en "soep" moet hij uit een veld van een formulier halen waar deze beide criteria in 1 veld staan.

Code:
SELECT Bedrijvenlijst.[Soort klant], Bedrijvenlijst.[Soort klant].Value, Bedrijvenlijst.Productgroep, Bedrijvenlijst.Productgroep.Value, 
FROM Bedrijvenlijst
WHERE (((Bedrijvenlijst.Productgroep.Value)="saus")) OR (((Bedrijvenlijst.Productgroep.Value)="soep"));

Hopelijk is mijn vraag duidelijk, anders verduidelijk ik hem graag waar nodig en weet iemand het antwoord?

Groetjes,
Jordy
 
Misschien handig om e.e.a. toch iets nader te verklaren, want ik zie zo op het eerste gezicht het probleem niet.

Access maakt altijd een zooitje van query-statements, maar als ik 'm opschoon, zou dit gewoon moeten werken.

WHERE (Productgroep.Value="saus" OR Productgroep.Value="soep")

Tenzij je via het formulier een keuze wilt kunnen maken?

Michel
 
deze query werkt ook gewoon. hetgeen ik wil realiseren is dat hij in plaats van de vaste criteria "saus" en "soep" deze variabelen haalt uit de velden van een geopend formulier.

In dat formulier staat 1 veld waar meedere opties aangevinkt kunnen worden, op basis van deze gekozen opties moet hij dan de query uitvoeren.

Hopelijk is dit duidelijker.
 
Dan zou ik het zo oplossen:

Code:
If chkSaus.Value=-1 Then
	strCriteria="WHERE (Productgroep.Value="saus" 
	bCheck=True
End If

If bCheck=True Then
	If chkSoep.Value=-1 Then strCriteria= strCriteria & " OR (Productgroep.Value="soep"
Else
	If chkSoep.Value=-1 Then strCriteria="WHERE (Productgroep.Value="soep" 
End If

Dit zet je dan in de <Na bijwerken> van beide checkboxen, zodat de voorwaarden altijd geëvalueerd worden. Ik ga er hierbij overigens voor het gemak van uit, dat je de query code m.b.v. het formulier aan de query hangt. Anders wordt het ietsje anders...

Michel
 
Laatst bewerkt:
en nu heb ik een klein probleem :-(, ik heb nog nooit met VBA gewerkt. Tot nu toe heb ik altijd alles kunnen oplossen met macro's en directe verwijzingen (opbouwen expressies).

Kan je me een site laten zien hoe ik dit in een query kan verwerken of hoe ik dit überhaupt in Access moet zetten.

Misschien gaan er wel meer deuren voor me open :-)

Groetjes,
Jordy
 
Hoi Jordy,

Omdat je de aankruisvakjes op een formulier gebruikt, ging ik er eigenlijk vanuit dat je de query met een knop opent. Het is in beginsel niet verstandig om formuliercriteria vast in een query in te bouwen, omdat je het formulier dan altijd open moet hebben staan om de query foutloos te laten draaien.

Omdat ik best wel vaak dezelfde basisquery draai, met variaties daarop, werk ik dus ook vaak met selecties op een formulier, die dan worden toegevoegd aan de basisquery zodra ik op de knop van de query klik.

Werkt als volgt:
1. Maak je query zonder filtering.
2. Zet je filteropties op het formulier. (heb je al gedaan)
3. Maak een knop die de query opent
4. Verander de code van de knop (ongeveer) als volgt:

Code:
dim strSQL as String, strCriteria as String, bCheck as Boolean

If Me.chkSaus.Value=-1 Then
	strCriteria="WHERE (Productgroep.Value="saus" 
	bCheck=True
End If

If bCheck=True Then
	If Me.chkSoep.Value=-1 Then strCriteria= strCriteria & " OR (Productgroep.Value="soep"
Else
	If Me.chkSoep.Value=-1 Then strCriteria="WHERE (Productgroep.Value="soep" 
End If

strSQL="SELECT * FROM [Jouw_Query] " 
strSQL=strSQL & VbCrLf & strCriteria

DoCmd.RunSQL(strSQL)

Wat je hiermee doet is het volgende:
Je maakt een tijdelijke query aan, die alle velden uit je basisquery selecteert, met een toegevoegde filtering op basis van de aangekruiste vakjes.
Vervolgens geef je de knop de opdracht om de query uit te voeren.
Deze oplossing is zeer flexibel, omdat je dus allerlei combinaties aan je basisquery kunt hangen; je hoeft eigenlijk alleen maar te kijken naar de waarden van je selectievelden, en die toe te voegen aan de variabele strCriteria.

Kun je hier weer wat mee?

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan