Avatar billede nimrod1 Nybegynder
23. august 2002 - 13:19 Der er 6 kommentarer og
1 løsning

Datoformat. Konflikt mellem ASP-koden's og Access' datoformat?

I forbindelse med kald af datoer fra en access-database, har jeg opdaget, at "order by"-sorteringen henter datoerne sorteret efter us-engelsk format, selv om "session.LCID" er sat til dansk standard (1030). Er der andre, der har observeret problemet, hvad er årsagen og findes der en enkelt løsning på det?

Den relevante kodestump står her:

  tid1 = now()
  tid2 = DateAdd("d", nutidh, tid1)
 
  periodesql = "select * from aktivitetsplan where Ungdomsenior='"& gruppetype &"' and dato < #"& tid2 &"# and dato > #"& tid1 &"# order by dato asc"

  set perioders = aktivConn.execute(periodesql)




På forhånd tak for svaret.

/Nimrod1
Avatar billede coltau Juniormester
23. august 2002 - 13:30 #1
session.LCID har ikke indflydelse på hvordan datoerne findes i Access eller andre databaser så problemet må ligge i noget andet.

Hvis du virkelig får en forkert rækkefølge med "order by" kan det kun skyldes at dato-feltet ikke er af typen dato. !

Jeg tror at dit problem findes et andet sted. Det er nok nærmere udtrækket (WHERE) der finder de forkerte datoer.

Prøv med denne:
Session.LCID = 1033
periodesql = "select * from aktivitetsplan where Ungdomsenior='"& gruppetype &"' and dato < #"& tid2 &"# and dato > #"& tid1 &"# order by dato asc"
Avatar billede nimrod1 Nybegynder
23. august 2002 - 13:45 #2
Coltau:

Det var min første tanke, men det er dato-format i databasen.

Det virker i kraftig grad, som om Access kun anvender us-engelsk datoformat ved forespørgsler. Dvs, at databasens dato-format i sig selv er us-engelsk (1033). For sorteringen fungerer fint med den standard i ASP-koden.

Jeg har iøvrigt prøvet at eksperimentere med 1033 men der giver en masse ekstraarbejde i forbindelse med fremvisningen.

Den ideelle løsning for mig vil være, hvis jeg kan tvinge access til at finde værdierne efter dk-standard, da jeg så slipper for bøvlet med bytte rundt på måned og år i udskriften.

/Nimrod1
Avatar billede neteffect Nybegynder
23. august 2002 - 13:47 #3
Avatar billede nimrod1 Nybegynder
23. august 2002 - 13:47 #4
... Forudsat selvfølgelig, at det er det er en dato-formatet i access, der er problemet.

/Nimrod1
Avatar billede coltau Juniormester
23. august 2002 - 14:04 #5
Normalt skal du bruge Session.LCID = 1030 for at få vist datoerne i dansk format - men Access anvender ikke LCID.

Men LCID anvendes når du indsætter data i Access med SQL-sætninger.

Session.LCID = 1030
sDato = "06-12-2002" ' 6-dec-2002
SQL = "insert into tabel (ID, dato) values (1, #" & sDato & "#)"
Ovenstående kode vil indsætte en dato der hedder 12-juni-2002

Kan det ikke være dit problem. ?

En anden ting som jeg først kommer i tanke om nu er tabellen kan være ødelagt. Den kan repareres i Access under menupunktet: Funktioner - Databasefunktioner - Komprimer og reparer database.
Avatar billede proaccess Nybegynder
23. august 2002 - 14:09 #6
Access har dato-værdier registreret i formattet: mm/dd/yyyy

Du burde således kunne bruge:

periodesql = "select * from aktivitetsplan where Ungdomsenior='"& gruppetype &"' and dato < #"& Format(tid2, "mm/dd/yyyy") &"# and dato > #"& Format(tid1, "mm/dd/yyyy") &"# order by dato asc"
Avatar billede nimrod1 Nybegynder
23. august 2002 - 14:44 #7
Neteffect har leveret den mest anvendelige løsning, så han får de 60 point. Men både proaccess og coltau har givet nogle interessante input
så en tak til dem også.

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