Avatar billede Jman Praktikant
20. juli 2006 - 18:40 Der er 24 kommentarer og
1 løsning

Dato byttes om

I en accesdatabase har jeg to datofelter. Når jeg eksempelvis taster 12-08-2006 ind, bliver det lavet om til 08-12-2006
Hvordan forhindrer jeg dette?
P.S. Der er session.lcid=1030 på siden også
Avatar billede Jman Praktikant
20. juli 2006 - 18:59 #1
hvad endnu mere mærkeligt er at hvis jeg taster 08-12-2006 bliver det OGSÅ ombyttet til 12-08-2006
Avatar billede nielle Nybegynder
20. juli 2006 - 19:36 #2
Access forventer at få datoer serveret på formen mm-dd-yyyy. LCID har ingen indflydelse på dette: Den influere kun hvordan ASP koden opføre sig, og har ingen indflydelse på Access selv.
Avatar billede nielle Nybegynder
20. juli 2006 - 19:38 #3
At 12-08-2006 og 08-12-2006 bliver ombyttet til 08-12-2006 og 12-08-2006 er kun i overenstemmele med dette.

Men prøv så med en dato hvor tallet ville være lovlig som dag, men ikke som måned:

20-07-2006

- og se så at Access brokker sig.
Avatar billede Jman Praktikant
20. juli 2006 - 19:38 #4
men hvordan kan det være at den ændre dd-mm uagtet hvordan det indtastes?
Avatar billede nielle Nybegynder
20. juli 2006 - 19:52 #5
Du indsætter din dato på formen:

dd-mm-yyyy (hvilket er almindeligt dansk datoformat)

- og Access fortolker det som:

mm-dd-yyyy (hvilket er almindeligt amerikansk datoformat)

Dvs. at den konsekevent fortolker det du tror at du indsætter på dag-delen som måned, og det du tror at du indsætter på måned-delen som dag.
Avatar billede Jman Praktikant
20. juli 2006 - 20:09 #6
Men det er jo nemmerlig ikke tilfældet her:
12-08-2006 (dd-mm-yyyy) bliver til 08-12-2006
08-12-2006 (dd-mm-yyyy) bliver til 12-08-2006

Altså både dato og måned er gyldige indenfor månedsintevallet. Men alligvel bliver de byttet rundt??
Avatar billede cpufan Juniormester
20. juli 2006 - 20:19 #7
hvis du laver dit dato format som yyyy-mm-dd bliver det altid indsat og hentet ud korrekt
Avatar billede nielle Nybegynder
20. juli 2006 - 20:20 #8
Det er da lige præcis det som er tilfældet (og det har iøvrigt intet at gøre med at både dag og måned er lovlige).

Når du skriver 12-08-2006 læser du det som 12 august 2006. Det gør du fordi at du er dansk og er vant til at i Danmark betyder 12-08: "den 12. dag i den 8. måned".

Imidlertid er Access udviklet af et kendt amerikansk firma, og det læser derfor tingene i følge amerikansk datoformat. I USA læses 12-08 imidlertid som: "den 8. dag i den 12. måned".
Avatar billede Jman Praktikant
20. juli 2006 - 20:36 #9
jeps!
Men hvis jeg taster det ind som mm-dd-yyyy (08-18-2006) giver den fejl ?
Avatar billede nielle Nybegynder
20. juli 2006 - 20:39 #10
Nej, det skulle den bestemt ikke fejle over. Gør den da det hos dig?
Avatar billede Jman Praktikant
20. juli 2006 - 21:34 #11
Jeg har fundet at fejlen var min udregning af antal uger mellem fradato og tildato .. pga omvendingen af dato gave den et meget langt negativ tal - og det ville min database ikke være med til.
Men lige en mere... hvis f.eks skriver fra: 01-08-2006 til: 07-08-2006 beholder den datoen som den er skrevet .. hvorfor bytter den ikke om her?
Avatar billede nielle Nybegynder
20. juli 2006 - 21:47 #12
Er du sikker på at det ikke er nogen af dine kodeændringer som er skyld i at det nu virker anderledes? Umiddelbart er der i hvert fald ingen grund til at Access skulle begynde at opføre sig anderledes.
Avatar billede Jman Praktikant
20. juli 2006 - 21:54 #13
ja, for jeg trillede en backup ind igen  ;)
Avatar billede nielle Nybegynder
20. juli 2006 - 21:56 #14
Ikke forstået?
Avatar billede Jman Praktikant
20. juli 2006 - 22:04 #15
Ja, af det originale script..
Jeg giver op for i aften .. læg et svar for din stædige hjælp ;)
Avatar billede nielle Nybegynder
20. juli 2006 - 22:19 #16
Hvis du ikke har fået løst dit problem, så synes jeg da bare at vi skulle fortsætte i morgen. Hvis det da er i orden med dig? Jeg tager normalt ikke point for at være stædig, kun for at hjælpe med en løsning. :^)

PS: Skal der i øvrigt ikke snart ske noget med denne?: http://www.eksperten.dk/spm/717350
Avatar billede Jman Praktikant
20. juli 2006 - 22:23 #17
tjooeh.. :/
Avatar billede Jman Praktikant
25. juli 2006 - 22:54 #18
damn *Grrrrrr*

Nu har jeg forsøgt snart alt med samme resultat :/

Eksempler:
04-11-2006 bliver til 11-04-2006 i DBen
11-04-2006 bliver til 11-04-2006 i DBen

StartDay = 04
StartMonth = 11
StartYear = 2006
StartDay&"-"&StartMonth&"-"&StartYear bliver til 04-11-2006 i SQL, men 11-04-2006 i DB
StartMonth&"-"&StartDay&"-"&StartYear bliver til 11-04-2006 i SQL, men 11-04-2006 i DB

Kan man slet ikke arbejde uden om dette?

Jeg ville gerne lave DBen om til tekst-felter alene pga dette, men det er en meget omfattende side, med en masse sider, der såørger på disse datoer, så det er ret omstændigt at begynde at pille i det :/
Avatar billede nielle Nybegynder
25. juli 2006 - 22:58 #19
Databasen taler nu engang engelsk. Derfor bliver du altså også nødt til at give den tuíngene på engelsk format:

StartDay = 04
StartMonth = 11
StartYear = 2006

DatoEngelskFormat = StartMonth & "-" & StartDay & "-" & StartYear
Avatar billede nielle Nybegynder
25. juli 2006 - 23:19 #20
Ok, jeg tror at jeg forstår hvad det er som forvirre dig:

Databasen vil have tingene ind på engelsk, men den viser tingene på dansk!!! Forvirrende ikke?!

Well, årsagen kan bl.a. være at du har sat din side op med session.lcid=1030. Dette vil nemlig betyde at ASP viser datoerne på dansk format, men dette ændre ikke ved at Access forventer at få dem ind på engelsk format. Man kan sige at ASP ligger som et lag mellem dig og databasen og oversætter fra engelsk til dansk når datoerne skal vises.
Avatar billede Jman Praktikant
25. juli 2006 - 23:26 #21
Aaarh - verdamt.... jeg tror sgu egentlig at DBen har været ok, men visningen giver problemer.. eller også har jeg fået rettet noget rigtigt.
Jeg fik lige en mistanke om at jeg lige skulle kigge i DBen igen is stedet for min side, der viser alt - DBen viste 11-04-2006 (som ønsket)
Dvs nu er det "bare" sitet, der skal rettes .. lægger du et svar?
Avatar billede Jman Praktikant
25. juli 2006 - 23:34 #22
Lige et sidespørgsmål.. Når nu jeg har 11-04-2006 (4. november stående), hvordan kan jeg så også have 17-11-2006 stående (17. november), hvis access altid definerer måned først?
Avatar billede nielle Nybegynder
25. juli 2006 - 23:47 #23
Hvis du skriver session.lcid=1030 så burde ASP vise datoerne på dansk format helt af sig selv.

Men ellers er der jo altud Day(), Month() og Yeay() funktionerne - med dem kan du udtrække de enkelte dele af en dato, og så kan du jo skrive den lige på den form du ønsker.
Avatar billede Jman Praktikant
25. juli 2006 - 23:49 #24
Yeps - jeg tror den er ved at være der nu - mange tak for tålmodigheden
Tror du har helt ret i at forvirringen opstod i input vs. visning
Avatar billede nielle Nybegynder
25. juli 2006 - 23:52 #25
Svar :^)
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