24. august 2004 - 13:02Der er
8 kommentarer og 1 løsning
Select dato problemer
Jeg er ved at lave en side der skal kunne slette nyheder hvis de er over en bestemt dato.
Da det er selv skal kunne bestemme hvor gamle de må være, henter jeg det jeg skal bruge til DateAdd...fx kan rs("Data") være "ww",-2," hvilket giver DatoCalc til at blive fx: "ww",-2,"24-08-2004" Dato køres igennem eval og der sættes en tid på...det virker fint:
smukt smukt... problemet er nu at min select sætning hiver alle data ud fra databasen, den ser således ud:
"Select * from News where Dato<#" & Dato & "#" Eller udskrevet: Select * from News where Dato<#10-08-2004 13:01:30#
Jeg har prøvet med IsDate() på Dato og det ser ud til at være en dato godt nok...feltet Dato i databasen er Dato-klokkeslet, standart format... Hvorfor hiver den både datoer nyere og ældre end 10-08-2004 13:01:30 ud?
du har nok ret...for vælger jeg at den skal gå en måned tilbage vælger den dem godt n ok... Skulle dette ikke trække 2 uger fra datoen: DateAdd("ww",-2,"24-08-2004")
Begge kan være problemet. En ting er hvad du får vist i Access som dato, noget andet er hvad den vil modtage.
Det er et tilbagevendende problem, at selv om formatet er mm-dd-yyyy, vil den godt tage 31-12-2004, da den så ved at formatet er dd-mm-yyyy. Jeg plejer næsten altid at kunne få det til at virke ved at ændre formatet til YYYYMMDD eller YYYY-MM-DD.
Prøv f.eks i ASP dette: isDate("31-12-2004") isDate("12-31-2004")
kan jeg så ikke splitte Dato variablen op i så jeg henter Dag & "-" & Måned & "-" & år ud af den og ligger det ind i Dato<#"... istedet, eller hvordan ville du gøre?
Jeg plejer at lave en funktion som kaldes på alle datoer der skal bruges i SQL. Du kan da få den her:
Function ConvertToSqlDate(FunkDato) dim SQLYear,SQLMonth,SQLDay SQLYear = Year(FunkDato) SQLMonth = Month(FunkDato) SQLDay = Day(FunkDato) if SQLDay<10 then SQLDay = 0&SQLDay end if if SQLMonth<10 then SQLMonth = 0&SQLMonth end if ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear End Function
"Select * from News where Dato<#" & ConvertToSqlDate(Dato) & "#"
Har rette den til så den burde virke i Access (MM-DD-YYYY format). Ellers kan du jo flytte rundt på dem til det virker.
Jeg bruger når jeg får en dato fra ASP, som skal i en sql-sætning. Så ja, jeg bruger den altid.
Jeg har en Databaseinclude.asp fil med alle funktioner til databasen, som jeg henter ind på alle mine sider. Den indeholder f.eks opret/luk connection, udskift ' med to, dato formatering (med og uden TT:MM) samt andre funktioner...
Den helt rigtige ConvertToSqlDate som jeg har er: ConvertToSqlDate = "#"&SQLMonth&"-"&SQLDay&"-"&SQLYear&"#"
Så er du fri for at skrive #.
Hvis jeg så skifter database vil 95% af alle mine sql sætninger virke, og jeg skal kun en fil igennem og ændre min connection string, samt tilpasse dato converterne til det rigtige format, samt ændre # til ' (som andre databaser bruger)
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.