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/åå?
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.
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?
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"
Så hjalp det på det. Nu virker det lige som det skal :)
Takker for hjælpen eagleeye
Synes godt om
Ny brugerNybegynder
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.