/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Dato format
Fra : Ukendt


Dato : 04-05-06 14:08

Hej

Kan nogen i gruppen hjælpe med formatering af dato?

I min Access DB er feltet defineret som kort dato format (dd-mm-yyyy).
På mine ASP sider er <%Session.LCID = 1030%>.

Når jeg lister alle poster på en ASP side eller direkte i databasen vises
datoen som dd-mm-yyyy.

Men når jeg vil vise et dato interval med:

SELECT * FROM tblIncidentLog WHERE 1=1 and incidentDate BETWEEN #01-01-2005#
AND #03-05-2006#

opfattes databaseopslaget som mm-dd-yyyy og jeg får vist poster til 5 marts
og ikke som forventet til 3 maj.

Som en midlertidig løsning ændrer jeg datoformatet til mm-dd-yyyy med "len,
midt & right" når data sendes fra formularen til søge siden.

Men jeg kan ikke se hvorfor datoformatet skal være dd-mm-yyyy for at skrive
en dato til databasen med:
"INSERT INTO tblIncidentLog (IncidentDate----
"VALUES (" & "'" & request.form("IncidentDate") &----

og mm-dd-yyyy for at søge med
SELECT * FROM


M.v.h.
Henning



 
 
Jørn Andersen (04-05-2006)
Kommentar
Fra : Jørn Andersen


Dato : 04-05-06 22:32

On Thu, 4 May 2006 15:07:35 +0200, "Henning Smed" <henning snabela
smeds.dk> wrote:

>Kan nogen i gruppen hjælpe med formatering af dato?

<url: http://www.asp-faq.dk/article/?id=47>
<url: http://www.asp-faq.dk/article/?id=98>

Pointen er at fokusere på, at datoer skal overføres som *værdier* ikke
som et bestemt *format*.

Hvis udvekslingen af datoer mellem database og script sker som
værdier, er man frit stillet til at have forskellige formater i
database og i script. Og man får ikke overraskelser, hvis man fx
skifter til et webhotel med et andet sprog.

Spørg igen, hvis de to links ikke bringer dig (nok) videre.


Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (05-05-2006)
Kommentar
Fra : Ukendt


Dato : 05-05-06 06:02


"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:pcsk52d2ddmeuhvnei7rnltfts0mu9h0l5@4ax.com...
> On Thu, 4 May 2006 15:07:35 +0200, "Henning Smed" <henning snabela
> smeds.dk> wrote:
>
>>Kan nogen i gruppen hjælpe med formatering af dato?
>
> <url: http://www.asp-faq.dk/article/?id=47>
> <url: http://www.asp-faq.dk/article/?id=98>
>
> Pointen er at fokusere på, at datoer skal overføres som *værdier* ikke
> som et bestemt *format*.
>
> Hvis udvekslingen af datoer mellem database og script sker som
> værdier, er man frit stillet til at have forskellige formater i
> database og i script. Og man får ikke overraskelser, hvis man fx
> skifter til et webhotel med et andet sprog.
>
> Spørg igen, hvis de to links ikke bringer dig (nok) videre.

Hej Jørn,

Jeg har læst de 2 artikler og flere andre artikler på nettet, jeg havde
håbet at kun klare mig med formater.
Jeg er i gang med at modificere et websted som er flyttet fra en server i
USA til Dk, siderne er skrevet med DreamWeaver og mine forsøg på at rette
resulterer for det meste i at "håndkode" en ny side, jeg havde håbet at
kunne formatere datoen ens i asp og Access for at undgå at skrive en del nye
sider, men som du nævner vil problemet opstå igen hvis jeg skifter server.

Så jeg må i gang med at skrive alt der anvender dato om, og skrive nogle
"include filer" til at indsætte og vise dato.

Hvis du har flere links til sider der forklarer Dato > SQL > Access så jeg
kan forstå det vil det være fint.

Tak for dir svar
Henning



Jørn Andersen (06-05-2006)
Kommentar
Fra : Jørn Andersen


Dato : 06-05-06 03:31

On Fri, 5 May 2006 07:02:16 +0200, "Henning Smed" <henning snabela
smeds.dk> wrote:

>Jeg har læst de 2 artikler og flere andre artikler på nettet, jeg havde
>håbet at kun klare mig med formater.
>Jeg er i gang med at modificere et websted som er flyttet fra en server i
>USA til Dk, siderne er skrevet med DreamWeaver og mine forsøg på at rette
>resulterer for det meste i at "håndkode" en ny side, jeg havde håbet at
>kunne formatere datoen ens i asp og Access for at undgå at skrive en del nye
>sider, men som du nævner vil problemet opstå igen hvis jeg skifter server.
>
>Så jeg må i gang med at skrive alt der anvender dato om, og skrive nogle
>"include filer" til at indsætte og vise dato.

Ja, der er ingen vej uden om, desværre, hvis man vil lave noget som
ikke bare giver nye problemer senere.

Men heldigvis er det ikke så svært, hvis bare man overholder den helt
simple regel med at skelne mellem dato-værdier og dato-formater.
Brug *altid* dato-funktionerne, når du arbejder med datoer og brug
aldrig #-angivelser i SQL-strenge.

Jeg har en fast include-fil, som indeholder:
<%
' -- DateToSql start --
Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ") + " & _
"TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
End Function
' -- DateToSql slut --
%>

Den tager en *dato-værdi* fra ASP-scriptet som input og genererer en
tekststreng til SQL'en, som får databasen til også at modtage en
*dato-værdi*.

Den bruges således:
datMinDato = [en dato-værdi - fx den 5. maj kl. 23.30]
strSql = "INSERT INTO tblTabel (Datofelt)" & _
" VALUES (" & DateToSql(datMinDato) & ");"

Den Sql-streng, der sendes til databasen vil se således ud:
INSERT INTO tblTabel (Datofelt)
VALUES (DateSerial(2006, 5, 5) + TimeSerial(23, 30, 00));

Som du kan se, resulterer det i, at det er *databasens* DateSerial- og
TimeSerial-funktioner, der anvendes. Så databasen er *uafhængig* af
formatet, den får såden set kun overført tallene:
2006, 5, 5 og 23, 30, 00
indsat i de to funktioner. Og det kan ikke misforstås.

Ofte er det dog lige så praktisk at anvende dato-funktionerne direkte,
frem for DateToSql-funktionen. Hvis fx en bruger skal vælge en dato i
3 select-bokse (dag, måned, år), er der ofte ingen grund til først at
konvertere de 3 tal til en dato-værdi.

Hvis resultatet af select-boksen er 3 tal kaldet:
intDag, intMaaned, intAar
er det lige så nemt at indsætte dem direkte i SQL'en med:

INSERT INTO tblTabel (Datofelt)
VALUES (DateSerial(" & intAar & "," & intMaaned & "," & intDag & "));
- værdierne kommer fra scriptet, men funktionerne er databasens.

I dit tilfælde:
SELECT * FROM tblIncidentLog
WHERE 1=1 AND incidentDate BETWEEN #01-01-2005# AND #03-05-2006#

bliver det:
.... BETWEEN (DateSerial(2005, 1, 1) AND (DateSerial(2006, 5, 3)


>Hvis du har flere links til sider der forklarer Dato > SQL > Access så jeg
>kan forstå det vil det være fint.

Jeg ved egentlig ikke, om der er så meget mere at sige om emnet
Når først man har forstået det grundlæggende, så giver resten stort
set sig selv.

Det kan dog klart betale sig at bruge lidt tid til at sætte sig ind i
dato-funktionerne - både dem der hører til VBScript, og dem der hører
til Access (de er heldigvis ret ens) - så man ved, hvilke værktøjer,
der er til rådighed.


Good luck!

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408401
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste