Avatar billede sorenmt84 Juniormester
16. januar 2019 - 08:27 Der er 2 kommentarer og
1 løsning

Undtagelse ved SQL sammen med brug af OR

Jeg skal have hentet alle data ud af en tabel som passer på en given dato.
Jeg har felterne dato_start og dato_slut. For at den pågældende record i databasen skal tages med skal den valgte dato enten være lig med dato_start eller dato_slut eller et sted mellem de to datoer - så langt så godt den del virker fint.
Jeg skal så have lavet et tjek i en anden tabel for at se om den pågældende dato fremgår på den liste - og gør den det skal den springes over på den endelige liste.

Jeg har forsøgt mig med dette:
strSQL = "SELECT * FROM kalender WHERE id NOT IN (SELECT refid FROM kalender_udeluk WHERE CDate(dato) = #" & dato2 & "# ) and accepteret = TRUE and CDate(dato_start) = #" & dato2 & "# OR (CDate(dato_start) <= #" & dato2 & "# AND dato_slut is not null and CDate(dato_slut) >= #" & dato2 & "#) and accepteret = TRUE "

Problemet ved det er at "id NOT IN (SELECT refid FROM kalender_udeluk WHERE CDate(dato) = #" & dato2 & "# )" kun gør så gældende på den del af kriteriet der står inden "OR" - jeg tænker at jeg skal have sat kriteriet ind efter "OR" også - men jeg kan ikke gennemskue hvordan jeg skal gøre det?
Avatar billede softspot Forsker
16. januar 2019 - 09:10 #1
Umiddelbart kan du sætte parantes omkring din datobetingelse tjek, altså:

(CDate(dato_start) = #" & dato2 & "# OR (CDate(dato_start) <= #" & dato2 & "#)
Avatar billede sorenmt84 Juniormester
16. januar 2019 - 09:33 #2
Perfekt lige hvad der skulle til
Avatar billede arne_v Ekspert
26. januar 2019 - 03:53 #3
Jeg undrer mig over nogle ting.

Hvad er forskellen paa:

(CDate(dato_start) = #" & dato2 & "# OR (CDate(dato_start) <= #" & dato2 & "#)

og:

(CDate(dato_start) <= #" & dato2 & "#

?
Og ditto med:

accepteret = TRUE

versus:

accepteret

?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester