Avatar billede celal Nybegynder
30. april 2009 - 14:06 Der er 6 kommentarer og
1 løsning

Problemer med Dcount med dato kriterie

Jeg skal bruge følgende Dcount funktion:

startDato = "01-02-2009"
slutDato = "28-02-2009"

DCount("[Dag]", "Kalender", " (Dag BETWEEN #" & Startdato & "# AND #" & Slutdato & "#) AND Arbejdsdag=1")

Det er meningen at jeg skal få resultatet 20 men jeg får resultatet 41. Koden ovenover skulle gerne passe med følgende SQL:
SELECT Count(Dag) AS AntalOfDag FROM Kalender WHERE Arbejdsdag=1 AND Dag Between #2/1/2009# And #2/28/2009#

Når jeg køre en forespørgsel med den SQL får jeg det rigtige tal 20, men når jeg køre koden får jeg 41. Hvad gøre jeg galt?
Avatar billede celal Nybegynder
30. april 2009 - 14:07 #1
Jeg har også prøvet med følgende:
DCount("[Dag]", "Kalender", " (Dag BETWEEN #" & Format(Startdato, "dd/mm/yyyy") & "# AND #" & Format(Slutdato, "dd/mm/yyyy") & "#) AND Arbejdsdag=1")
men resultatet er igen forkert.
Avatar billede mugs Novice
30. april 2009 - 14:18 #2
Så vidt jeg kan se, vil de tælle antal mellem 2 datoer. Der er en funktion der hedder DateDiff, som netop er beregnet til dette. Brug den.

Funktionen kan bruges både i SQL og i VBA.

Efter hukommelsen:

DateDiff("d";Startdato;Slutdato)
Avatar billede mugs Novice
30. april 2009 - 14:21 #3
Udtryk1: DateDiff("d";[start];[slut])
Avatar billede celal Nybegynder
30. april 2009 - 14:21 #4
Jeg kan ikke bruge datediff, da jeg kun skal have arbejdsdage uden weekend og helligdage, og tabellen kalender indeholder kun arbejdsdage, som jeg tæller op ved at bruge dCount.
Avatar billede celal Nybegynder
30. april 2009 - 14:25 #5
Jeg har fundet ud af når jeg vender om på dag og mdr i startDatoen, så får jeg det rigtige tal:

startDato = "02-01-2009" 'mm/dd/yyyy
slutDato = "28-02-2009"  'dd/mm/yyyy

Men det går jo ikke. Hvordan kommer jeg uden om dette?
Avatar billede celal Nybegynder
30. april 2009 - 14:40 #6
Okay, har løst det ved at bruge format fra min forespørgsel Format([Startdato];"mm-dd-yyyy"), så jeg har vendt om på dd og mm. Det funger. Ellers tak for inputene.
Avatar billede Slettet bruger
01. maj 2009 - 08:10 #7
been there - med datoer som ikke kan vendes fungerer det efter vores nationle konvention, men access sql engine opfatter det ellers efter 'amerikansk' konvention - 05-01-2009 som 1 maj.

Standard utility i min 'codebase':
Function amrDate(dat As Date)
    amrDate = "#" & Format(dat, "mm-dd-yyyy") & "#"
End Function
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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