25. marts 2004 - 22:24Der 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.
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???
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...
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.
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...
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...
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.
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... :-/
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...
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 ##
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
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
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).
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.