Avatar billede kagge Nybegynder
15. december 2003 - 13:31 Der er 5 kommentarer og
1 løsning

Sammenligning af datoer

I min access-database har jeg datoer liggende i formatet: dd-mm-åååå.

Men når jeg hiver datoer ud fra databasen er formatet dd/mm/åå (opsætning på serveren)

Brugeren ser datoen på denne måde: dd.mm.åååå

det gør jeg ved hjælp af følgende konvertering:

if recordSet("Sendt_dato") <> "" then

sendag = string(2-len(day(recordSet("Sendt_dato"))),"0") & day(recordSet("Sendt_dato"))
senmon = string(2-len(month(recordSet("Sendt_dato"))),"0") & month(recordSet("Sendt_dato"))
senaar = year(recordSet("Sendt_dato"))
sendtdato = sendag & "." & senmon & "." & senaar

End if

Brugeren kan søge efter en post hvis de indtaster en dato efter formatet dd.mm.åååå.

Men den kan ikke finde ud af at sammenligne det:

elseif soegefter ="dato" then

  strSQL = "SELECT Journalnr, Lokation, Sendt_dato, Sagsbehandler, Klientnavn, Cprnummer, Status FROM Koretest k WHERE (k.Status = 'Til kundecenter') AND (k.Sendt_dato LIKE '%" & soegestreng & "%') ORDER BY k.Journalnr DESC"

Hvordan laver jeg soegestreng om til formatet dd/mm/åå?
Avatar billede eagleeye Praktikant
15. december 2003 - 17:28 #1
Hvis kolonnen Sendt_Dato er af typen Date/Time så:
"Fejlen" skyldes at Access bruger US eller UK dato format som er yyyy-mm-dd eller mm-dd-yyyy via SQL. Når man så indsætter en dato i dansk dato format, hvor dagen er først så bytter den rundt på månede og dag i datoen.

Der er en løsning og der er at bruge dato funktionerne Year, Month og Day til at formatere din dato.

<%
dato = "04-06-2003"
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "INSERT INTO tablenavn (datokol) VALUES (#" & strDato & "#)"
%>
Avatar billede kagge Nybegynder
16. december 2003 - 08:04 #2
Jeg har nok formuleret mig lidt kringlet :) Problemet er ikke at indsætte i databasen. Jeg formaterer til us-format på følgende måde:

indgaetdato = Request.Form("inddato")

if indgaetdato <>"" then
indgaetdatous = split(indgaetdato,".")
indgaetdato = indgaetdatous(2) & "-" & indgaetdatous(1) & "-" & indgaetdatous(0)
kolDato = kolDato & ", Indgaet_dato"
dataDato = dataDato & ", #" & indgaetdato & "#"
end if

Problemet opstår når brugeren angiver en dato i et søgefelt og en sql-sætning skal finde poster der matcher i basen.

F.eks. hvis brugeren indtaster 16.12.2003 i et felt. Hvis jeg hiver dette ud i nedenstående variabel:

soegestreng = Request.Form("soegeord")

Nu vil jeg så lave en sql som finder poster:

elseif soegefter ="dato" then

strSQL = "SELECT Journalnr, Lokation, Sendt_dato, Sagsbehandler, Klientnavn, Cprnummer, Status FROM Koretest k WHERE (k.Status = 'Til kundecenter') AND (k.Sendt_dato LIKE '%" & soegestreng & "%') ORDER BY k.Journalnr DESC"

Ovenstående sql finder ikke nogle poster!!! Hvis brugeren derimod indtaster 16/12/03 så finder den posterne.. Det er vel fordi at serveren er sat op til formatet dd/mm/åå... Problemet er bare at brugeren skal indtaste efter formatet: dd.mm.åååå

Kan man ikke på en eller anden måde lave sqlen, så formatet er den samme som brugeren har indtastet, altså 16.12.2003?
Avatar billede eagleeye Praktikant
16. december 2003 - 17:13 #3
Hvilken type er kolonnen Sendt_dato
Avatar billede kagge Nybegynder
17. december 2003 - 08:35 #4
Sendt_dato er af typen date/time
Avatar billede eagleeye Praktikant
17. december 2003 - 20:31 #5
Ja men så skal det også være yyyy-mm-dd du bruger som dato format når du overføre til databasen. Grunden til det så virker med 16/12/03 er fodi den ikke bytter rundt på 16 og 12 da 16 ikke er en gyldig måned. Hvis du skriver 06/12/03 finden den så den 6.december eller 12.juni?


Prøv sådan her:

elseif soegefter ="dato" then

indgaetdatous = split(soegestreng ,".")
indgaetdato = indgaetdatous(2) & "-" & indgaetdatous(1) & "-" & indgaetdatous(0)
strSQL = "SELECT Journalnr, Lokation, Sendt_dato, Sagsbehandler, Klientnavn, Cprnummer, Status FROM Koretest k WHERE (k.Status = 'Til kundecenter') AND (k.Sendt_dato =#" & indgaetdato & "#) ORDER BY k.Journalnr DESC"
Avatar billede kagge Nybegynder
18. december 2003 - 12:52 #6
Så hjalp det på det. Nu virker det lige som det skal :)

Takker for hjælpen eagleeye
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
Kurser inden for grundlæggende programmering

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

IT-JOB