Query voorwaarde <> in IIF statement

Status
Niet open voor verdere reacties.

M.Broere

Gebruiker
Lid geworden
4 okt 2000
Berichten
75
Ik heb een query die afhangkelijk van een slectievakje wel of niet een waarde moet weglaten.

Formule: IIF(als selectievakje =leeg ;<>1;alle waarden)

De formule werkt voor alle waarden, als ik de voorwaarde 1 invul ipv <>1 krijg ik keurig alle records met waarde 1. Echter als ik <>1 invul krijg ik geen records terwijl die er wel zijn.

Ik denk dat komt omdat de IIF formule alleen waardes teruggeeft en geen "voorwaardes"

Ik kan het oplossen door een extra regel op te nemen met de voorwaarde <>1. (Dus of voldoen aan de formule IIF of <>1) Maar vind dit geen nette oplossing.

De vraag is dus hoe krijg ik een "voorwaarde" terug uit een IIF formule.

:confused:
 
Laat de werkelijke code eens zien daar kan ik veel meer mee. Ik weet namelijk niet wat je met <>1 bedoelt. Bedoel je hiermee een numerieke waarde ongelijk aan 1 of bedoel je de alphanumerieke waarde '<>1'? En bedoel je met 'voorwaardes' een boolean? die true of false teruggeeft?

Weest gegroet,
Guus
 
Laatst bewerkt:
Stukje code

IIf([Forms]![FrmRapVerhuur]![SelVerkoopleegstand]=Onwaar;Not ([TabMutLeegst].[Mutatietype])=(1);[TabMutLeegst]![Mutatietype])

Of
IIf([Forms]![FrmRapVerhuur]![SelVerkoopleegstand]=Onwaar;<>1;[TabMutLeegst]![Mutatietype])

de te selecteren waarde is nummeriek,
(=sleutelveld van hulptabel Mutatietype of hiernaar verwijzend veld in TabMutLeegst )

Groetjes Marco
 
Ik bedoelde eigenlijk de hele query want ik kan me voorstellen dat als je <>1 terug wilt geven, je blijkbaar een hele andere query wilt bouwen dan ik me voor kan stellen.

Ik beloof je dat ik je query nergens anders zal gebruiken. Dit met het oog op software patenten:rolleyes:

Weest gegroet,
Guus
 
Je boedoeld onderstaande in SQL ?

SELECT TabMutLeegstUitSG.ID_Mutaties, TabMutLeegstUitSG.prcl_nr_compleet, Val(Right([tabmutleegstuitSG]![prcl_nr_compleet],5)) AS prcl_nr, TabMutLeegstUitSG.cmpfin_nr, TabMaandJaar.Begindatum, TabMaandJaar.Einddatum, TabMaandJaar.Kwartaal, TabMutLeegstUitSG.Startdatum, TabMutLeegstUitSG.[Datum tot], TabMutLeegstUitSG.Mutatietype, TabMutLeegstUitSG.dagen, TabMaandJaar.ID_Jaar, TabMaandJaar.ID_maand, TabMutLeegstUitSG.[Bruto derving], TabMutLeegstUitSG.ID_Jr_start, TabVHEperMndUitSG.[Netto huur], IIf([Startdatum]>=[Begindatum],IIf([Datum tot]<=[Einddatum],[Datum tot]-[Startdatum],[Einddatum]-[Startdatum]+1),IIf([Datum tot]<=[Einddatum],[Datum tot]-[Begindatum],[Einddatum]-[Begindatum]+1)) AS Huurdagen, ([Huurdagen]*[Netto huur]/([Einddatum]-[begindatum]+1)) AS NettoHuurdagen
FROM TabMaandJaar INNER JOIN (TabMutLeegstUitSG INNER JOIN TabVHEperMndUitSG ON TabMutLeegstUitSG.prcl_nr_compleet = TabVHEperMndUitSG.prcl_nr_compleet) ON (TabMaandJaar.ID_maand = TabVHEperMndUitSG.Maand) AND (TabMaandJaar.ID_Jaar = TabVHEperMndUitSG.Jaar)
WHERE (((TabMutLeegstUitSG.cmpfin_nr)=IIf([Forms]![FrmRapverhuur]![CboComplex]=0,[TabMutLeegstUitSG]![cmpfin_nr],[Forms]![FrmRapverhuur]![CboComplex])) AND ((TabMaandJaar.Begindatum)>=([Startdatum]-([einddatum]-[begindatum]))) AND ((TabMaandJaar.Einddatum)<=([datum tot]+[einddatum]-[begindatum])) AND ((TabMutLeegstUitSG.Mutatietype)=IIf([Forms]![FrmRapVerhuur]![SelVerkoopleegstand]=False,Not ([TabMutLeegstUitSG].[Mutatietype])=(1),[TabMutLeegstUitSG]![Mutatietype])) AND ((TabMaandJaar.ID_Jaar)>=[Forms]![FrmRapVerhuur]![FraJaarkeuzestart] And (TabMaandJaar.ID_Jaar)<=[Forms]![FrmRapVerhuur]![FraJaarkeuzeeinde]) AND ((TabMaandJaar.ID_maand)>=[Forms]![FrmRapVerhuur]![Framaandkeuzestart] And (TabMaandJaar.ID_maand)<=[Forms]![FrmRapVerhuur]![Framaandkeuzeeinde])) OR (((TabMutLeegstUitSG.cmpfin_nr)=IIf([Forms]![FrmRapverhuur]![CboComplex]=0,[TabMutLeegstUitSG]![cmpfin_nr],[Forms]![FrmRapverhuur]![CboComplex])) AND ((TabMaandJaar.Begindatum)>=([Startdatum]-([einddatum]-[begindatum]))) AND ((TabMaandJaar.Einddatum)<=([datum tot]+[einddatum]-[begindatum])) AND ((TabMutLeegstUitSG.Mutatietype)<>1) AND ((TabMaandJaar.ID_Jaar)>=[Forms]![FrmRapVerhuur]![FraJaarkeuzestart] And (TabMaandJaar.ID_Jaar)<=[Forms]![FrmRapVerhuur]![FraJaarkeuzeeinde]) AND ((TabMaandJaar.ID_maand)>=[Forms]![FrmRapVerhuur]![Framaandkeuzestart] And (TabMaandJaar.ID_maand)<=[Forms]![FrmRapVerhuur]![Framaandkeuzeeinde]));
 
precies die bedoel ik.

u hoort nog van mij.

weest gegroet,
Guus
 
Ik denk dat je het volgende stukje code wel herkend?
Code:
AND ((TabMutLeegstUitSG.Mutatietype) = 
        IIf([Forms]![FrmRapVerhuur]![SelVerkoopleegstand]=False,  Not ([TabMutLeegstUitSG].[Mutatietype]) = (1),[TabMutLeegstUitSG]![Mutatietype]))
Als de voorwaarde false is mag het AND gedeelte niet gelijk zijn aan 1 en anders moet deze gelijk zijn aan zichzelf. Je kan het NOT gedeelte vervangen door een subquery die als resultaat alle mutatie typen teruggeeft ongelijk aan 1
Code:
AND ((TabMutLeegstUitSG.Mutatietype) = 
        IIf([Forms]![FrmRapVerhuur]![SelVerkoopleegstand]=False,  (Select MutatieType from [TabMutLeegstUitSG] where [Mutatietype] <> 1),[TabMutLeegstUitSG]![Mutatietype]))
Misschien moet je de = nog veranderen in IN....

Succes!

Weest gegroet,
Guus
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan