AND en OR combineren bij rapport

  • Onderwerp starter Onderwerp starter AtroX
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

AtroX

Gebruiker
Lid geworden
29 jul 2009
Berichten
29
Hoi,

hoe kun je in een rapport alle records laten weergeven waar één of meerdere velden niet ingevuld zijn terwijl er aan twee andere voorwaarden moet worden voldaan?

SELECT...
FROM...
WHERE ((([tblRBSPS Plastic Surgeons].Meeting_Id) = [Forms]![frmRBSPS Plastic Surgeons]![txtid]) AND (([tblRBSPS Plastic Surgeons].Reaction_id)=2));

Hierbij zouden enkel de records moeten verschijnen waar er één of meerdere velden leeg zijn:

OR (([tblPlastic Surgeons].Name) is Null) OR (([tblPlastic Surgeons].First Name) is Null) OR ...

Maar dan wordt elke record tweemaal weergegeven, alles ingevuld of niet. Hoe kan ik die AND en OR in één WHERE gebruiken?

In PHP heb je zoiets als:

WHERE (a=2 AND b=1 AND Name="") OR (a=2 AND b=1 AND First Name="") OR ...
 
Als records meer dan één keer worden weergegeven of niet hangt af van hoe en welke tabellen je in de query hebt zitten. Als je een query baseert op één tabel, en je filtert er op, dan kan elk record maar één keer verschijnen in het resultaat. Heb je twee tabellen gekoppeld met een één-op-veel relatie, dan kun je meer records per unieke ID zien, afhankelijk van de hoeveelheid records per sleutel.

Je kunt dat voorkomen door Group By op de juiste manier te gebruiken. In dit geval moet je Group by gebruiken voor het sleutelveld, en bijvoorbeeld de overige waarden waarop je wilt groeperen op <Eerste>, i.p.v. Group By.

Je filtering zou er zo uit moeten zien:

WHERE ((Meeting_Id = [Forms]![frmRBSPS Plastic Surgeons]![txtid] AND Reaction_id=2) OR ([tblPlastic Surgeons].Name is Null OR [tblPlastic Surgeons].First Name is Null))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan