30. juni 2014 - 14:47Der er
6 kommentarer og 1 løsning
Bruge en comboradio boks som kriterie for en boolean
Jeg er igang med at bruge en radio boks med 3 indstillinger som kriterie i en forespørgsel på et boolean felt.
Det er fordi jeg vil sætte brugeren i stand til at søge på aktive tilbud, passive tilbud og dem alle sammen.
Jeg har lavet et usynligt felt på formen der hedder sandfalsk, som jeg med kode opdaterer med værdierne -1,0,2
-1 for Sand 0 for Falsk 2 for det hele.
Så i kriteriefeltet laver jeg følgende kriterie
spørger efter -1, hvis sand sættes værdien -1, hvis falsk spørger jeg efter værdien 0 hvis sand sættes værdien til 0, hvis falsk er det 2 og så skal der søges på alle der har 0 eller -1.
IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=0;0;IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=-1;-1;(([DT_tilbudskalender].[aktiv])=0 Or ([DT_tilbudskalender].[aktiv])=-1)))
Det virker med -1 or 0, men ikke med OR delen.
Hvis jeg kun har OR delen i kriteriet fuldstændig som det står her, virker det.
Er der nogen der har et bud på hvorfor. SQL er lang og ser sådan her ud..
SELECT DT_tilbudsbeskrivelse.navn, DT_tilbudskalender.dato, DT_tilbudskalender.starttid, DT_tilbudskalender.sluttid, DT_tilbudskalender.antalpladser, DT_tilbudskalender.antalbrugtepladser, DT_tilbudskalender.IDrum, DT_rum.navn, DT_tilbudsbeskrivelse.tilbudstype, DT_tilbudskalender.IDmedarbejder, DT_tilbudskalender.aktiv FROM DT_tilbudstype INNER JOIN (DT_tilbudsbeskrivelse INNER JOIN (DT_rum INNER JOIN (DT_roller INNER JOIN ((DT_medarbejder INNER JOIN DT_tilbudskalender ON DT_medarbejder.IDmedarbejder = DT_tilbudskalender.IDmedarbejder) INNER JOIN ST_roller ON DT_medarbejder.IDmedarbejder = ST_roller.IDmedarbejder) ON DT_roller.IDrolle = ST_roller.IDroller) ON DT_rum.IDrum = DT_tilbudskalender.IDrum) ON DT_tilbudsbeskrivelse.IDtilbud = DT_tilbudskalender.IDtilbudsbeskrivelse) ON DT_tilbudstype.IDtilbudstype = DT_tilbudsbeskrivelse.tilbudstype WHERE (((DT_tilbudskalender.dato)>=[Forms]![FM_ret_i_tilbudskalenderen]![fradato] And (DT_tilbudskalender.dato)<=[Forms]![FM_ret_i_tilbudskalenderen]![tildato]) AND ((DT_tilbudskalender.aktiv)=IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=0,0,IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=-1,-1,((DT_tilbudskalender.aktiv)=0 Or (DT_tilbudskalender.aktiv)=-1)))) AND ((DT_roller.rollenavn)="Underviser") AND ((DT_medarbejder.aktiv)=True)) ORDER BY DT_tilbudskalender.dato;
Its the Where clause thats interesting... here it is
WHERE (((DT_tilbudskalender.dato)>=[Forms]![FM_ret_i_tilbudskalenderen]![fradato] And (DT_tilbudskalender.dato)<=[Forms]![FM_ret_i_tilbudskalenderen]![tildato]) AND ((DT_tilbudskalender.aktiv)= IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=0,0,IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=-1,-1,((DT_tilbudskalender.aktiv)=0 Or (DT_tilbudskalender.aktiv)=-1)))) AND ((DT_roller.rollenavn)="Underviser") AND ((DT_medarbejder.aktiv)=True))
hmm fandt ud af det, men er ikke sikker på hvorfor det virker..
istedet for dette her
IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=0;0;IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=-1;-1;(([DT_tilbudskalender].[aktiv])=0 Or ([DT_tilbudskalender].[aktiv])=-1)))
IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=0;0;IIf([Forms]![FM_ret_i_tilbudskalenderen]![sandfalsk]=-1;-1;(([DT_tilbudskalender].[aktiv])=0 Or ([DT_tilbudskalender].[aktiv])=-1)))
What this says is
If sandfalsk = 0 Then 0
Else if sandfalsk = -1 Then 0
else > Not sure if this is a logical expression (([DT_tilbudskalender].[aktiv])=0 Or ([DT_tilbudskalender].[aktiv])=-1))
Radio 1 active as true Radio 2 active as false Radio 3 active as either true or false
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.