Avatar billede decrypto Nybegynder
25. marts 2004 - 22:24 Der er 21 kommentarer og
2 løsninger

Bytter om på måned og dato

Hejsa.

Jeg har et rigtigt irrterende spørgsmål. Jeg forsøger forgæves at smide en dato ned i min access database. Min sql ser også fint ud, når jeg udskriver den, men desværre bytter den om på dato og måned. Da der ikke er noget i vejen med min SQL, så er det access databasen, der gemmer datoen i US format. Hvordan kan jeg omgå dette.

Her er min sql, når jeg skriver den ud.
------------------------------------------------
INSERT INTO WEBSIDE (WEBSTED_ID, SKABELON_ID, BRUGER_ID, NAVN, FORSIDE, MENUPUNKT, OVERSKRIFT, RAEKKEFOLGE, START_DATO, SLUT_DATO) VALUES (1, 1, 1, 'Et navn', 1, 1, 'En overskrift', 5, #02-04-2004#, #03-04-2004#);

Dette ser jo rigtigt ud, men i access står der 04-02-2004 og 04-03-2004, og det passer jo ikke.

Håber på et godt og simpelt svar.

dEcRyPt0
Avatar billede mugs Novice
25. marts 2004 - 22:26 #1
Kontroller dine regionale settings for dato og klokkeslæt i kontrolpanelet.
25. marts 2004 - 22:27 #2
Det er et kendt problem. Prøv med denne:

INSERT INTO WEBSIDE (WEBSTED_ID, SKABELON_ID, BRUGER_ID, NAVN, FORSIDE, MENUPUNKT, OVERSKRIFT, RAEKKEFOLGE, START_DATO, SLUT_DATO) VALUES (1, 1, 1, 'Et navn', 1, 1, 'En overskrift', 5, #2004-04-02#, #2004-04-02#);
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:32 #3
Jo men det kræver jo, at mine bruger skal taste en dato i YYYY-MM-DD format, er det virkelig den eneste vej. Kan jeg ikke convert(datetime,'') i access ligsom på SQL Server, eller lave konverteringen i min SQL???
Avatar billede rad Nybegynder
25. marts 2004 - 22:33 #4
Hvis du istedet for hard-codede datoer anvender et felt, en variabel eller lign. kan du anvende format-funktionen på værdien for at omformatere til US-format...
Avatar billede rad Nybegynder
25. marts 2004 - 22:35 #5
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:37 #6
Lad mig få et eksempel på format funktionen. Nej, mine datoer er ikke hardcoded, datoerne er 'indtastet' -> rettere sagt valgt i et JavaScript genereret kalender.
Avatar billede rad Nybegynder
25. marts 2004 - 22:38 #7
Se det spm. jeg referer til - der er et eksempel... :-)
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:40 #8
Yes, lige hvad jeg har brug for tester lige....:-)
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:46 #9
Type mismatch...
Hvorfor kan jeg ikke flg.
"...,#"& format(dteStartDato, "MM-DD-YYYY") & "#, #" & format(dteSlutDato, "MM-DD-YYYY") & "#,..."
????
Avatar billede rad Nybegynder
25. marts 2004 - 22:49 #10
kan det skyldes at dteStartDato og dteSlutDato ikke er datofelter? Jeg synes at erindre at format kræver at det er datofelter (og/eller muligvis af typen variant) - prøv at tjekke i access-hjælpen for format-funktionen...
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:54 #11
Så er vi vel ude i-> #"&format(Cdate(dteSlutDato), "MM-DD-YYYY"))&"#
Avatar billede decrypto Nybegynder
25. marts 2004 - 22:55 #12
Næææh stadig væk: //Type mismatch: 'format'
Avatar billede decrypto Nybegynder
25. marts 2004 - 23:01 #13
Kan heller ikke finde noget i Access. Jeg synes at være tæt på løsningen. Er der andre foreslag???
Avatar billede rad Nybegynder
25. marts 2004 - 23:03 #14
Tja, jeg er lidt usikker. Jeg har kun anvendt funktionen med textbokse i Access, hvor formatet for textboksen er sat til dato. (Men har tekstbokse en type udover string? Anvendes format ikke blot til at fortælle Access hvordan data skal fortolkes...?)
Her er et eksempel hvor jeg bygger en søgestreng op pba. af en formular:
    If IsNull(Me!txtBeginFrom) And Not IsNull(Me!txtBeginTo) Then
        strFilter = strFilter & " Begin <= #" _
        & Format(Me!txtBeginTo, "mm-dd-yyyy", vbMonday, vbUseSystem) & "# AND"
txtBeginTo er et tekstfelt på en formular hvor format er sat til "kort datoformat"
Håber det kan hjælpe...
Avatar billede rad Nybegynder
25. marts 2004 - 23:08 #15
Kører du SQL'en i Access eller i et andet program der kalder access-db?
Avatar billede decrypto Nybegynder
25. marts 2004 - 23:10 #16
men hvor kommer format fra. VBscript kender det jo slet ikke. Jeg sidder og arbejder i visual interdev, og der plejer at poppe egenskaber frem, når man taster funktionen.
Avatar billede rad Nybegynder
25. marts 2004 - 23:14 #17
Så forstår jeg. Format er en funktion i VBA. Den kan du sandsynligvis ikke anvende i VBscript. Jeg ved ikke om der findes en tilsvarende funktion der. Ellers må du lave noget fikumdik hvor du bider strengen op i dele og vender om på dag og måned.

Jeg kender desværre ikke VBscript nok til at kunne hjælpe med dette... :-/
Avatar billede decrypto Nybegynder
25. marts 2004 - 23:16 #18
Jeg kører bygger min SQL op i ASP(vbscript). Jeg bruger "ADODB.Connection") til at snakke med Access.
Avatar billede rad Nybegynder
25. marts 2004 - 23:18 #19
En hurtig løsning er at gemme datoen som en streng, og så formatere den som en dato når du skal bruge den som dato. Det er selvfølgelig ikke så elegant, men det burde virke...
Avatar billede terry Ekspert
26. marts 2004 - 08:49 #20
The format Access stores dates in the DB is ALWAYS the same no matter what regional settings you use! One problem when using dates is ensuring that the date INSERTED into the database is correct. An example to explain this:

'12-11-2002' Is this 11th Decemeber or 12th November 2002?

So the best way to insert a date into the dB is use

'yyyy-mm-dd' format and that way it should work no matter how your regional settings are.

Also, when inserting date you put the dates in '' when selecting date you put them in ##

So, INSERT ...... '2004-04-02' .....
Avatar billede decrypto Nybegynder
26. marts 2004 - 09:47 #21
Hej alle eksperter....

Jeg har konstrueret noget kode som smider ned i YYYY-MM-DD formatet, så skal jeg bare sørge får at vise Datoen i DD-MM-YYYY, når jeg vil vise den til brugerne.

Her er min.
session.LCID = 1030

Function htmlFormatDato(dto)
    'Omformater dato format til YYYY-DD-MM
      htmlFormatDato=year(dto)&"-"&right("00"&month(dto),2)&"-"&right("00"&day(dto),2)
End Function

Dim MinDato

MinDato = "11-03-2004"
Response.Write MinDato&"<br>"
Response.write htmlFormatDato(MinDato)
Avatar billede decrypto Nybegynder
26. marts 2004 - 10:03 #22
Det gik lidt for hurtigt med tasterne. Jeg sørger for at omformatere min dato til YYYY-MM-DD, og smide den ned i Access basen.

Jeg kan forstå at jeg bare skal sætte #MinDato#, når jeg selecter den fra basen, så vil formatet blive vist som DD-MM-YYYY. Er det korrekt?

Her er min kode:
--------------------------------------------
session.LCID = 1030

Function htmlFormatDato(dto)
    'Omformater dato format til YYYY-DD-MM
      htmlFormatDato=year(dto)&"-"&right("00"&month(dto),2)&"-"&right("00"&day(dto),2)
End Function

Dim MinDato

MinDato = "11-03-2004"
Response.Write MinDato&"<br>"
Response.write htmlFormatDato(MinDato)
-------------------------------------------------------
Avatar billede terry Ekspert
26. marts 2004 - 10:14 #23
SELECT * FROM WEBSIDE WHERE START_DATO = #yyyy-mm-dd#

This should find the correct records, I'm not too sur how you will display these in the correct format in ASP but I think that you can use Format([Dato], "dd-mm-yyyy") as you can in VB(VBA).
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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