Hvis det f.eks. er en Access, så vil jeg anbefale dig at bruge de indbyggede funktioner til dato-behandling. Din SQL kunne så se nogenlunde således ud:
SQLkalender="Select * from Kalender where Fra between now() and dateadd('d',7,now())"
Det er en SQL database. Hvis jeg bruger flg.: SQLkalender="Select * from Kalender where Fra between getdate() and dateadd(day,7,getdate())"
Så får jeg flg. fejl: ADODB.Recordset.1 (0x80004005) SQLState: 37000 Native Error Code: 1064 [MySQL][ODBC 3.51 Driver][mysqld-4.1.11-Debian_4sarge7-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() and dateadd(day,7,getdate())' at line 1 kalender.asp, line XX
Problemet med at benytte indbyggede funktioner er at et database skifte er meget besværlig. Men hvor ofte gør man lige det alligevel :o)
Løsningen på det er at formatere datoerne i ASP:
function DBDate(fDate) DBDate = "#"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"-"& year(fDate) &"#" end function
SQLkalender="Select * from Kalender where Fra between "& DbDate(X) &" and "& DBDate(Y) &""
Den jeg har vist er til Access. Er det til f.eks Ms-SQL ændre man bare: DBDate = "#"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"-"& year(fDate) &"#"
OK, så er det en MySQL Server (der er relevante forskelle på om det er en SQL Server eller en MySQL server, selvom navnet ligger tæt på :)).
Den kender jeg desværre ikke lige formatet af den ønskede funktionalitet til, så der må du i referencemanualen eller vente til der kommer et bud fra en anden bruger :)
function DBDate(fDate) DBDate = "'"& year(fDate) &"-"& right("0"&month(fDate),2) &"-"& right("0"&day(fDate),2) &"'" end function
X = date() Y = date()+7
SQLkalender="Select * from Kalender where Fra between "& DBDate(X) &" and "& DbDate(Y) &"" Set kalender = Conn.Execute(SQLkalender) Do while kalender.eof=false
Det er vist en større diskussion om man skal formatere dato'er i ASP eller i databasen og om man skal bruge native eller generisk kode (kan man egentlig det!? på et eller andet niveau skal man tage stilling til den konkrete database man arbejder med, så det er bare et spørgsmål om hvor meget man vil pakke tingene ind og det afhænger jo igen af hvilken opgave man skal løse).
Princippielt er jeg uenig i at det er lettere at for formatere datoer i ASP, for du skal have flettet dem sammen med SQL'en alligevel og der er forskellige formater for hvordan dato'er håndteres. Endvidere risikere man at tingene falder sammen når man skifter fra et sprog til et andet, hvor datoformaterne typisk også skifter - så er det noget bras at sidde med en streng som skal fortolkes på udførslestidspunktet! Jeg har prøvet det nogle gange, så det er ikke kun baseret på teori ;-)
softspot >> Jeg er fuldt enig i at har man muligheden burde man bruge de indbyggede funktioner, men man skal være klar over problemerne, hvis man vil skifte engang i fremtiden, hvilket ofte sker, hvis man bruger Access.
Nu sidder jeg selv og laver kode hvor kunderne faktisk selv kan vælge hvilken database de vil bruge (Access eller MS-SQL), fordi de både kan få det i en hostet løsning (Ms-SQL) eller en privat løsning (Access). Snart tilbyder vi også en MySQL løsning, som faktisk kører nu, fordi vi bare ændre DBDate. Funktionen er dog lidt mere advanceret da den kører ud fra en config fil, men grundideen er den samme.
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.