Where criteria van query omzetten als VBA

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
535
Goede morgen ontwikkelaars,

Ik heb een query waar twee velden een criteria hebben.

WHERE (((TabelDienstenPrio.PrioDienstID)=5 Or (TabelDienstenPrio.PrioDienstID)=9) AND ((TabelCorrespondenten.[PrioGraad])<>"0"))

Hoe kan ik deze omzetten als VBA?

De bedoeling is om

Code:
Docmd.openform "FormTar",,, CRITERIA


Thanks

Greetz

Pascal :cool:
 
Laatst bewerkt:
Als je criteriumwaarden vast liggen, zoals in je query, dan kun je de code volgens mij gewoon zo toepassen. Je mag dat oerwoud aan haakjes laten staan, of opschonen.
Ik word altijd een beetje ongerust als mensen getallen als tekst gaan filteren :).
Code:
Criteria = "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9 AND TabelCorrespondenten.[PrioGraad]<>0)"

Komen de waarden uit keuzelijsten, dan moet je de code wél aanpassen.
Code:
Criteria = "(TabelDienstenPrio.PrioDienstID = " & Me. cboPriodienst1.Value " Or TabelDienstenPrio.PrioDienstID = " & Me. cboPriodienst2.Value " AND TabelCorrespondenten.[PrioGraad] <> 0)"
 
Octafish,

Bedankt voor de reactie,

De criteriumwaarden die zijn vast.

Dit had ik mss beter vanaf het begin uitgelegd. :rolleyes:

Mijn formulier FormTar is op basis van een Query, waar o.a. naam, voornaam, telefoonnummer en PrioDienstID (uit de tabel TabelDienstenPrio) en een PrioGraad (uit de tabel TabelCorrespondenten)

Ik wil door middel van 3 buttons de FormTar openen met 3 verschillende criteria zoals 1 in het voorbeeld hieronder.

De SQL "Where" van 1 van die Query is : WHERE (((TabelDienstenPrio.PrioDienstID)=5 Or (TabelDienstenPrio.PrioDienstID)=9) AND ((TabelCorrespondenten.[PrioGraad])<>"0"))

Om te vermijden dat ik 3 verschillende queries moet opbouwen met hun eigen criteria, met 3 verschillende forms, verbonden aan die query wil ik in de docmd.openform de criteria bepalen naar 1 form met 1 neutrale query. (Nu is het FormTar1 met QueryTar1, en 2 en 3)

Dus ik zoek iets zoals
Code:
Docmd.openform "FormTar",,,[PrioDienstID) = 5 Or 9 AND [PrioGraad]<>"0"

Of is het zoals je hebt voorgesteld :

Code:
Docmd.openform "FormTar",,,Criteria = "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9 AND TabelCorrespondenten.[PrioGraad]<>0)"

Thanks

Greetz

Pascal:cool:
 
Hoi, als je een combinatie van AND and OR voorwaarden hebt kan je best de haakjes goedzetten.

Code:
Criteria = "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9) AND TabelCorrespondenten.[PrioGraad]<>0"
 
Misschien druk ik mij niet goed uit...:(:(

Ik wil geen "CRITERIA" als dusdanig definiëren, ik wil gewoon de criteria (WhereCondition) achter de docmd.openform bepalen.

vb :

Code:
DoCmd.OpenForm "FormTar", , , "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9) AND TabelCorrespondenten.[PrioGraad]<>0"

Maar ik krijg gegevenstypen komen niet overeen in de criteriumexpressie

PrioDienstID = Autonummer
PrioGraad = koste tekst (moet niet mee gerekend worden)


Of doe ik het compleet fout?


Thanks

Greetz

Pascal :cool:
 
variabele of niet, moet alletwee werken want is alletwee hetzelfde
Code:
     Criteria = "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9) AND TabelCorrespondenten.[PrioGraad]<>0"
     DoCmd.OpenForm "FormTar", , WhereCOndition:= Criteria
 
Je kan het ook zonder extra variable doen, en de expressie gewoon meegeven op de juiste plaats of ze benoemen, maar als je de argumenten benoemt moet je ze allemaal benoemen.
Als Priograad een varchar is dan moet die wel tussen aanhalingstekens worden meegegeven

of
Code:
DoCmd.OpenForm "FormTar", , , "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9) AND TabelCorrespondenten.[PrioGraad]<>""0"""

of
Code:
docmd.OpenForm formname :="FormTar", Wherecondition:= "(TabelDienstenPrio.PrioDienstID=5 Or TabelDienstenPrio.PrioDienstID=9) AND TabelCorrespondenten.[PrioGraad]<>""0"""
 
Noella,

Bedankt:thumb:

Dat is eigenlijk wat ik zocht.

Da andere oplossingen zal ik zeker ook proberen uit te werken.

Tot de volgende

Greetz

Pascal:cool:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan