On 19 Sep 2006 07:59:45 GMT, Laurits Thomsen
<laurits_vibjerg@hotmail.com> wrote:
>I min database
Hvilken database?
>har jeg en tabel der bl.a. indeholder en startdato
>(langt datoformat) og en slutdato (langt datoformat).
Glem formatet - det fortæller kun noget om, hvordan det *vises* i din
database. *Værdien* er den samme uanset hvilket format der er valgt.
(I hvert fald i MS Access, som er den jeg kender bedst.)
>Tabellen
>viser nogle vagter der er startet på startdatoen og sluttet på
>slutdatoen. (det kunne f.eks. være en vagt der er startet
>01-01-06 kl. 07:15 og sluttet 01-01-06 kl. 22:00.
>Jeg ønsker nu at lave en side der f.eks. kan vise alle der har
>været på vagt kl. 08:00 og 16:00. Jeg har været ved at rode mig
>ud i en masse IIF sætninger i min SQL, men tænkte om der er en
>der kender en smart løsning.
Der er 3 muligheder:
- vagtstart ligger i intervallet
- vagtslut ligger i intervallet
- vagtstart ligger før intervalstart og vagtslut ligger efter
intervalstart
' Angiv først interval-start og -slut,
' så er det nemmere at overskue
strIntervalStart = "DateSerial(2006, 1, 1) + TimeSerial(8, 0, 0)"
strIntervalSlut = "DateSerial(2006, 1, 1) + TimeSerial(16, 0, 0)"
strSql = "SELECT whatever FROM tblVagtSkema" & _
" WHERE (vagtstart BETWEEN " & strIntervalStart & _
" AND " & strIntervalSlut & _
") OR (vagtslut BETWEEN " & strIntervalStart & " AND " & _
strIntervalSlut & _
") OR (DateDiff('s', vagtstart, " & strIntervalStart & _
") < 0 AND DateDiff('s', vagtslut, " & strIntervalSlut & _
") > 0)"
BETWEEN ... AND er svjh *inkl.* de angivne værdier.
Ikke testet - håber det virker
Forudsætter, at det er en Access db, da den anvender de indbyggede
funktioner i Access.
Good luck!
--
Jørn Andersen,
Brønshøj