/ 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
arbejde med dato og database i ASP
Fra : MooreHojer


Dato : 23-02-06 23:05

Hej NG

Jeg har i min database en felt af typen 'Date' der har formen
'yyyy-mm-dd'.
På min side har jeg et formfelt af typen 'text' hvor brugeren skal
skrive en dato på formen 'dd-mm-yyyy'.

Er der en måde at konvertere brugerens form til databasen form, og
omvendt?

Hvis man skal sammen ligne to datoer i ASP er det så bare at som man
normalt ville med en variabel eller et recordset?
If Date = rs("dato") Then
.....
End If


På Forhånd Tak!

--
MooreHojer


 
 
Jørn Andersen (24-02-2006)
Kommentar
Fra : Jørn Andersen


Dato : 24-02-06 00:14

On Thu, 23 Feb 2006 23:05:29 +0100, "MooreHojer" <simon@moorehojer.dk>
wrote:

>Jeg har i min database en felt af typen 'Date' der har formen
>'yyyy-mm-dd'.
>På min side har jeg et formfelt af typen 'text' hvor brugeren skal
>skrive en dato på formen 'dd-mm-yyyy'.
>
>Er der en måde at konvertere brugerens form til databasen form, og
>omvendt?

Start med at læse:
<url: http://www.asp-faq.dk/article/?id=47>
<url: http://www.asp-faq.dk/article/?id=98>
- især den sidste.

De fleste begår den fejl, at de fokuserer på datoernes *form*, i
stedet for på deres *værdi*. Det sker fx når man overfører datoer til
Sql'en som tekststrenge (fx '13-05-2006').

Man får helt klart færrest problemer, hvis man behandler dem som
datoer, når de skal ind og ud af databaser - som den sidstnævnte
artikel viser.

Når man så skal have dem vist på sin side, kan man enten bruge
standard-formatterne - se fx:
<url: http://www.html.dk/tutorials/asp/lektion4.asp>
eller man kan selv tilpasse formatet ved at trække dag-, måned- og
år-værdierne ud af dato-variablen og så stykke en passende streng
sammen af dette.

Når man skal have datoer fra en formular ind en database, er der også
flere muligheder.
a) Man kan spare en del validering ved at bruge select-boxe til at
lade folk *vælge* datoer i stedet for at skrive dem.
b) Den mere avancerede løsning er at lave en egentlig
kalender-funktion (som i ASP.Net er utroligt nemt, men er en noget
mere kompleks ting i trad. ASP.)
I begge tilfælde (a og b) skal de valgte værdier så bare sættes ind i
Sql-strengen på samme måde som i artklens første eksempel:
strSQLDate = "INSERT INTO Tabel (datoFelt) VALUES (DateSerial(" & Aar
& ", " & Maaned & ", " & Dag & "))"

c) Hvis man alligevel vælger at lade folk *skrive* datoen, skal man
for det første lave noget validering, så man sikrer sig, at det
faktisk er en dato. Dernæst skal man putte det ind i Sql-strengen som
i førnævnte eksempel - efter at man har trukket de enkelte værdier
(år, måned, dag) ud af tekststrengen (med Left, Right og Mid).

>Hvis man skal sammen ligne to datoer i ASP er det så bare at som man
>normalt ville med en variabel eller et recordset?
>If Date = rs("dato") Then
> .....
>End If

Det kan man godt, hvis værdien af rs("dato") er en "ren" dato uden
timer, min. og sek.
Date1 = DateSerial(2006, 2, 24) + TimeSerial(23, 30, 0)
Response.Write (Date = Date1)
' Vil udskrive False undtagen kl. 23.30.00

Date2 = DateSerial(2006, 2, 24)
Response.Write (Date = Date2) & "<br>" & vbcrlf
' Vil udskrive True hele dagen

Ellers er DateDiff den "rigtige" måde at gøre det på.
If DateDiff("d", Date, rs("dato")) = 0 Then ...

I det hele taget kan det godt betale sig at bruge lidt tid på at sætte
sig ind i VBScripts dato-funktioner:
DateDiff, DateAdd, DatePart
TimeSerial, DateSerial
DateValue, TimeValue
Hour, Minute, Second
Day, Month, Year
Weekday, WeekdayName, MonthName
CDate

Lad dato/tid-værdier forblive dato/tid-værdier undtagen i selve
udskriften. Ved hjælp af VBScripts dato-funktioner har man rigtigt
mange muligheder for at beregne og bearbejde dato/tid-information, som
man mister, hvis man springer over, hvor gærdet (tilsyneladende) er
lavest og fokuserer på formatet og behandler dem som tekststrenge.

Håber det leder dig på rette vej - ellers spørg igen


Good luck!

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

MooreHojer (24-02-2006)
Kommentar
Fra : MooreHojer


Dato : 24-02-06 11:55

Tak for det udførlige svar. Jeg vil strak kaste mig over de to artikler
og de nævnte dato-funktioner

--
MooreHojer


Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste