Jimmy wrote:
>
> > [Lauritz's kode]
> Hm... Det virker,
Naturligvis
> men jeg er ikke helt sikker på at jeg forstår hvorfor.
Det er fordi funktionen DateSerial er en funktion, som givet 3 heltal
(år, måned og dag), retunerer en datoværdi.
> Jeg har læst et sted at man skal bruge havelåger omkring datoer (#)
> Hvorfor skal man egentlig det. Hvad gør de der havelåger?
Nummertegnene omkring en dato, svare nogenlunde til gåseøjnene (")
omkring en tekststreng. Dog er det en meget slet ide at bruge den måde
at angive datoer, da det datoformat, man skal bruge mellem
nummertegnene, afhænger af sprogopsætningen for den bruger, der er
logget ind på serveren. Det vil sige at hvis du flytter din kode til en
anden server, risikerer du at din kode ikke virker som planlagt. Dette
problem har du ikke, hvis du bruger DateSerial/TimeSerial.
> Derudover forstår jeg ikke at der skulle være forskel på at returnere datoen
> via din funktion (DateToSql(value)), og på at skrive det du skriver i din
> funktion direkte i SQL'en. eks.
>
> SELECT sum(felt1), sum(felt2), sum(felt3), sum(felt4)
> FROM daglinier
> WHERE dato <= DateSerial(Year(value), Month(value), Day(value))
> AND DateSerial(Year(value), Month(value), Day(value))
> Dette virker ikke!
Jo, det virker, hvis du allerede har fået variablen "value" helskindet
over til database-serveren, men så har du jo klaret det og så er der jo
ikke grund til at konverterer mere på det.
> Men med havelåger om datoerne virker det. Så er det bare
> at jeg ryger ind problemet med landekoder.
Nemlig.
> SELECT sum(felt1), sum(felt2), sum(felt3), sum(felt4)
> FROM daglinier
> WHERE dato <= DateToSql(value)
> AND DateToSql(value)
> Dette virker, da jeg bruger din funktion, men hvorfor skulle dette
> virke bedre end ovenstående?
> Det forstår jeg ikke?
Det er basalt fordi, sql er almindelig, flad, død tekst, som bliver
genereret i asp, sendt til databaseserveren, for der at blive tolket. Da
der kan opstå tvetydigheder, når databaseserveren prøver at tolke en
dato, gør min funktion det, at den laver sql, der ikke indeholder
datoer, men kun indeholder heltal, som ikke kan misforstås af
databaseserveren.
> Derudover er jeg lidt i tvivl om, om Between ikke tager begge datoer inkl.,
> da jeg kun har brug for at den første dato er inkl., endelig ikke den
> sidste?
"between" er begge inklusive (se evt. i sql-dokumentationen). Husk
iøvrigt at de dato vairable, der bliver brug også indeholder tid
(default er kl. 00:00 om morgenen, så vidt jeg husker). Du kan evt.
bruge DateAdd til at trække en enkelt dag fra slutdatoen, hvis du ikke
vil have resultater fra denne dag med.
--
Lauritz