Avatar billede r-bj Nybegynder
11. december 2002 - 17:38 Der er 11 kommentarer og
1 løsning

Dato Problem..... HASTER

Hejsa

Jeg har et mærkværdigt dato-problem i den forespørgels i en access database. Jeg skriver lige den vigtige del af koden (siden hedder for øvrigt default.asp) og så forklarer problemet:

  <%
  dato = request.querystring("dato")
    ConnString = "DSN=projekt"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConnString
    Set Rs = Conn.Execute("SELECT * From bil where dato = #"&dato&"# ")

if rs.eof then


Her køres så en masse kode som i bund og grund blot opretter en masse nye felter i en tabel


rdir = "default.asp?dato=" & dato
response.Redirect(rdir)
%>

Det er så meningen at efter felterne i tabellen er oprettet så sendes brugeren tilbage til samme side med samme dato som blev givet første gang, hvorefter datoen gerne skulle være oprettet i tabellen og skridtet med den oprettelse derfor skulle blive sprunget over.

Desværre så sker det men nogle datoer at den kører oprettelsen igen i et uendeligt loop. Eksempelvis har den et problem med datoer 01-12-2002 til og med 11-12-2002 og med 01-02-2003 til 11-02-2003. Hvor den fint kan klare andre datoer i de 2 måneder. Der er da heller ikke problemer med de samme "lave" datoer i Januar 2003.

Jeg har ingen anelse om hvad det kan skyldes og da jeg er lidt i tidsnød er der da også masser af point at komme efter for et svar jeg kan bruge til noget.
Avatar billede midas_dk Nybegynder
11. december 2002 - 17:44 #1
Det er nok fordi din Locale Setting er forkert - dvs. at din Access-database ikke er samme sprog som dit styresystem (eller din ASP-applikation). Det vil så sige, at du ikke kan regne med hvordan dine datoer bliver gemt - og at det er derfor du har problemer med netop disse dato-intervaller. Så længe din dato hedder f.eks. 19/12-02, er der ikke noget at gå fejl af, men hvis det f.eks. er 10/11-02, vil en engelsk-"talende" database gå ud fra at det er en amerikansk dato, altså at det er den 11. oktober...

Prøv at se om du ikke UDELUKKENDE kan smide rundt med engelske datoer...
Avatar billede eagleeye Praktikant
11. december 2002 - 17:46 #2
Det er fordi SQL bruger US/UK datoformat altså yyyy-mm-dd eller mm-dd-yyyy og ikke DK format selvom databasen er sat til DK format.
Avatar billede eagleeye Praktikant
11. december 2002 - 17:47 #3
Så prøv at tilføge en linie som formater Datoen efte denne linie:

  dato = request.querystring("dato")

Sådan her: 

  dato = Year(Dato) & "-" & Month(Dato) & "-" & Day(Dato)
Avatar billede r-bj Nybegynder
11. december 2002 - 17:48 #4
Ja det glemte jeg så måske at sige..... jeg har dobbeltjekket at de kører samme sprog. De kører samme sprog begge 2, og dato formatet ser ud som jeg skrev det, altså dd-mm-åååå

Skal måske også siges at jeg tester det på min egen maskine med IIS, så hvis det evt kan skyldes en indstilling der så lytter jeg meget gerne til det også. Må desværre indrømme at mit kendskab til lige netop til kunne være bedre.
Avatar billede r-bj Nybegynder
11. december 2002 - 17:49 #5
jeg prøver lige dit eagleeye, det lyder ikke helt dumt :-)
Avatar billede midas_dk Nybegynder
11. december 2002 - 17:50 #6
--> eagleeye: det holder ikke. For at alting skal fungere, skal man så vidt muligt holde datoer som objekter, og ikke som strenge. Eller holde den i et internationalt format (yyyy.mm.dd).
Avatar billede r-bj Nybegynder
11. december 2002 - 17:51 #7
Tjaaa.... nu føler man sig jo en smule dum, når det så viser sig at det åbenbart var så nemt at løse... *s*

Ihvertfald så virker det perfekt nu, så mange tak for det svar eagleye.
Avatar billede ducks Nybegynder
11. december 2002 - 17:53 #8
eller lav det om til DK tid.

Mener det er session.lctid = 1033

der skal stå i toppen
Avatar billede midas_dk Nybegynder
11. december 2002 - 17:53 #9
--> r-bj: så vær lige sikker på at applikationen ikke skal flyttes til en anden server indenfor nærmeste fremtid ;-/
Avatar billede midas_dk Nybegynder
11. december 2002 - 17:54 #10
Avatar billede eagleeye Praktikant
11. december 2002 - 17:54 #11
--> midas_dk: Det er SQL og dermed er alt en streng.. I ASP koden når man arbejder/udkriver datoer... så ja så skal man lade ASP fortolkeren holde styr på datoen.. Nu er det så via SQL og SQL bruger yyyy-mm-dd eller mm-dd-yyyy som standart dato format.


--> ducks: Dansk format er 1030. Og nej det hjælper ikke på at SQL bruger US/UK som dato format.
Avatar billede midas_dk Nybegynder
11. december 2002 - 18:00 #12
--> eagleeye: Du har lidt ret - men ved du for eksempel altid, at det rent faktisk ER måneden, der hentes ud hvis du bruger Month(str)? Det tror jeg ikke... Men okay, hvis det virker hér, er det vel godt nok!

Bygones...
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