/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Datofelt amok
Fra : Kim Bach Petersen


Dato : 02-03-02 16:17

Et pludseligt opstået problem i en ellers velfungerende nyhedstjeneste: ved
kontakt til databasen byttes der tilsyneladende rundt, så dd-mm-yy bliver
til mm-dd-yy. Jeg mener ikke, at jeg har ændret nogen indstillinger, der
indfluerer på dette og har nu kæmpet en halv dag...

En sql som denne

INSERT INTO tblNyheder (datostart, datoslut, overskrift, nyhedstekst,
reference) VALUES
(#02-03-02#,#09-03-02#,'"&voverskrift&"','"&vnyhed&"','"&vredaktoer&"')"

opretter altså nu en nyhed med datostart=#03-02-02# i databasen, hvor den
før oprettede korrekt som i sql-strngen (#02-03-02#).

Det giver selvfølgelig store problemer med senere udtræk:

SELECT Id, overskrift, nyhedstekst FROM tblNyheder WHERE
datoslut>=#02-03-2002# AND datostart<=#02-03-2002# ORDER BY datostart DESC

henter tilsvarende kun poster, hvor datoerne står omvendt i mm-dd-yy format.
Problemet ser altså ud til at være opstået i inerface'et til databasen, men
hvad er der sket..?

Er der en skudsikker løsning på dette?

Kim





 
 
Jørn Andersen (02-03-2002)
Kommentar
Fra : Jørn Andersen


Dato : 02-03-02 17:54

On Sat, 2 Mar 2002 16:17:19 +0100, "Kim Bach Petersen" <kim@kensho.dk>
wrote:

>Et pludseligt opstået problem i en ellers velfungerende nyhedstjeneste: ved
>kontakt til databasen byttes der tilsyneladende rundt, så dd-mm-yy bliver
>til mm-dd-yy. Jeg mener ikke, at jeg har ændret nogen indstillinger, der
>indfluerer på dette og har nu kæmpet en halv dag...

Det er ikke er ukendt problem - er du sikker på, at der ikke er
skiftet server eller noget i den retning?

Problemet opstår, hvis datoangivelserne er afhængige af en eller anden
indstilling på serveren. Heldigvis er der flere ting, du kan gøre :)

1) Indsæt denne linie øverst på hver asp-side:
Session.LCID = 1030
- den kaldes Locale ID og definerer sprog-/lande-specifikke settings
(Måske er dette nok til at få det til at virke, men uanset så gå
videre til pkt. 2)

2) Lav en SQL, som er uafhængig af sprog-/lande-settings

Jeg plejer at bruge en lille funktion, postet for længe siden af
Lauritz Jensen, som hedder DateToSql:

' -- DateToSql start --
Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ") + " & _
"TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
End Function
' -- DateToSql slut --

I SQL'en skriver du så:
INSERT INTO tblNyheder (datostart, datoslut) VALUES
(DateToSql(datStart), DateToSql(datSlut))

>Er der en skudsikker løsning på dette?

Den plejer at virke ;)

Vi skiftede server på arbejde for kort tid siden, og jeg måtte rykke
indtil flere grå hår ud af hovedet, inden det gik op for mig, at jeg
lige så godt kunne rette alle SQL'er med datoer igennem. Så fremover
bliver der ikke indsat datoer i mine databaser uden denne funktion ...


Good luck,
Jørn

--
Jørn Andersen,
Brønshøj

Kim Bach Petersen (02-03-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 02-03-02 19:42

> Det er ikke er ukendt problem - er du sikker på, at der ikke er
> skiftet server eller noget i den retning?

Det troede jeg først, da jeg først opdagede fejlen på nettet. Men da jeg så
tjekkede lokalt på IIS kunne jeg se, at det også var galt dér... - og jeg
ved som sagt ikke af, at jeg skulle have ændret noget på konfigurationen.

Anyway,

> Jeg plejer at bruge en lille funktion, postet for længe siden af
> Lauritz Jensen, som hedder DateToSql:
> Den plejer at virke ;)

Det gjorde den også hér, deet var virkelig effektiv førstehjælp! Et
lettelsens suk!

>Så fremover bliver der ikke indsat datoer i mine databaser
>uden denne funktion ...

Heller ikke i mine...

Tusind tak herfra, Kim



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408843
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste