25. august 2005 - 00:28Der er
12 kommentarer og 1 løsning
vælg poster med startdato fra MÅNED/ÅR til MÅNED/ÅR
Hej
Har en Access-database hvor der er en startdato og en slutdato. Begge er "dato-klokkeslet format" og formatet er dd.mm.åååå.
Jeg har så en ASP-side hvor brugeren skal kunne vælge at se alle poster der har en startdato i en given periode. Til det formål har brugeren 4 selectbokse.
I de første 2 selectbokse (fra-funktionen) kan han kan vælge måned (januar til december), og i den næste boks han kan vælge årstal.
I de næste 2 selectbokse (til-funktion) er det det samme.
Dataene sender jeg videre til en ny side der så skal vise alle de pågældende poster. Men hvordan laver jeg SQL-sætningen på denne side???
Det som forvirrer mig er, at jeg i databasen bruger tal (dd.mm.åååå) og i selectboksene bruger jeg bogstaver (eks. marts). I databasen benytter jeg ikke kun måned og år - det gør jeg i selectboksene ....
' konstruer til-datoen og læg en måned til og træk derefter en dag fra for at få den sidste dag i måneden (så slipper vi for at holde styr på hvormange dage der er i hver måned). tilDato = request.form("tilyr") & "-" & right("00" & cstr(request.form("tilmd")), 2) & "-01" tilDato = DateAdd("d", -1, DateAdd("m", 1, tilDato))
' vælg så data mellem de to datoer... SQL = "SELECT * FROM tabel WHERE datoen BETWEEN #" & fraDato & "# AND #" & tilDato & "#"
jeg er næsten enig i softspot, jeg synes bare det virker besværligt at kalde månederne fra 1-12 og derefter lægge "00" til og finde de 2 bagerste tal Hvis du istedet kalder dem fra 01-12 så slipper du for den ekstra ting :o) Så får du datoen direkte som fraDato = request.form("frayr") & "-" & request.form("framd") & "-01" Hvis du undrer dig over det bliver lavet som yyyy-mm-dd når du i databasen har dd-mm-yyyy så skyldes det en bug som gør at du ellers risikerer at der undervejs bliver byttet om på dag og måned
Jeg tror til gengæld muligvis at du får et problem med din BETWEEN når du har klokkeslet i databasen (det erindrer jeg at jeg har prøvet men jeg er ikke 110% sikker) Det jeg tænker på er at hvis du siger "BETWEEN #'2005-01-01'# AND #'2005-01-31'#" så bør den finde alt fra 2005-01-01 00:00:00 og 2005-01-31 23:59:59 Jeg tror så at du måske kun vil få det imellem 2005-01-01 00:00:00 og 2005-01-31 00:00:00 Jeg er som sagt ikke sikker!, men hvis det viser sig at jeg tror rigtig så kan du løse det ved at istedet for at som softspot siger at lægge en måned til og trække en dag fra, så kan du lægge en måned til og trække et minut fra som tilDato = DateAdd("n", -1, DateAdd("m", 1, tilDato))
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.