Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:02 Der 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:

DatoCalc=rs("Data") & """" & Date() & """"
Dato="DateAdd(" & DatoCalc & ")"
Dato=eval(Dato) & " " & Time()

bliver til:
DateAdd("ww",-2,"24-08-2004")

udskriver:
10-08-2004 12:50:44

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?
Avatar billede fennec Nybegynder
24. august 2004 - 13:12 #1
Det kan være de opfatter formatet som MM-DD-YYYY.
Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:15 #2
tænket du på Dato variablen eller den i databasen? for den i databasen ser ikke ud til at gøre det
Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:17 #3
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")
Avatar billede fennec Nybegynder
24. august 2004 - 13:19 #4
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")

Det er ofte det samme med Access.
Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:21 #5
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?
Avatar billede fennec Nybegynder
24. august 2004 - 13:26 #6
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.
Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:43 #7
ja sq :) Det funger jo fint...tak. Bruger du den ved alle datoer mellem asp og access?
Avatar billede fennec Nybegynder
24. august 2004 - 13:54 #8
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)
Avatar billede idiotbarn Nybegynder
24. august 2004 - 13:56 #9
smart...tak for hjælpen
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