23. august 2002 - 13:19Der 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"
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"
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.
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.
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"
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. :-)
Synes godt om
Ny brugerNybegynder
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.