On Sun, 22 Feb 2004 21:40:19 +0000 (UTC), Faxholm <type@mailme.dk>
wrote:
>Tussen tak for det detaljerede svar men jeg har desværre stadigvæk
>problemer.
>
>Mit udtræk fra DB. vil eksempelvis se således ud: 10-07-1982
Det kan godt være det ser sådan ud, men hvis din databaseværdi er af
Dato/Tid-typen, så indeholder den også en time/minut/sekund-værdi.
Min pointe med denne detalje er, at du skal glemme at fokusere på
*formatet* og i stedet fokusere på *værdien*.
Hvis det lyder lidt krypotisk, så skulle det gerne blive tydeligere
herunder:
>og da jeg
>også har årstal med giver det mig det problem at hvis jeg bruger date
>funktionen kommer årstalet også med 2004 hvordan undgår jeg det.
Ok - det vender vi tilbage til.
>Den udgave som jeg bruger nu ser således ud:
>
><% AktuelDato = Right("0" & Day(Date()),2) & "-" & Right("0" &
>Month(Date()),2) %>
Her fokuserer du helt tydeligt på dato-*formatet* - ikke på *værdien*.
(Du behandler det som en tekststreng, ikke en datoværdi.)
Det samme gør du herunder:
>'Eksempel: Birthday = "10-07-1982"
>If Left(rs("Birthday"),5)= AktuelDato Then %>
><b><%= rs("Birthday") %></b>
><%Else%>
><%= rs("Birthday") %>
><%End If%>
>Men i denne udgave er det kun den aktuelle dato der bliver markeret med
>fed og mit ønske er at den skal være fed i 14 dage altså 14 dage før den
>aktuelle dato hvordan griber jeg det an.
Når jeg oven for har understreget, at man skal "behandle dato/tid som
dato/tid", så er det fordi det på sigt giver færrest problemer.
Men: Dato/tid er ikke uproblematisk, da der flere en del forskellige
nationale versioner, og da der ikke er enkle regneregler (som fx i
ti-tals-systemet).
Og sådan noget som alder og fødselsdage kan være rigtigt besværligt.
-----------------------------
En løsning kunne være:
datFoedselsdag = rs("BirthDay")
' Find næste fødselsdag (samme dato, men i år):
datNaesteFoedselsdag = DateSerial(Year(Now()), Month(datFoedselsdag),
Day(datFoedselsdag))
' NB: Ovenstående skal være på én linie
' Hvis fødselsdagen i år har været, lægger vi et år til:
If DateDiff("d", Date, datNaesteFoedselsdag) < 0 Then
datNaesteFoedselsdag = DateAdd("yyyy", 1, datNaesteFoedselsdag)
End If
' Find antal dage til næste fødselsdag
intDiff = DateDiff("d", Date, datNaesteFoedselsdag)
If intDiff < 15 Then
Response.Write "<strong>" & datFoedselsdag & "</strong>"
Else
Response.Write datFoedselsdag
End If
' Denne sidste er mest for sjov:
Response.Write "<br />" & vbcrlf & _
"Der er " & intDiff & " dage til næste fødselsdag.<br />"
-----------------------------
Tag et kig på:
DateSerial
DateAdd
DateDiff
- og se hvad de gør - det er en god træning i at håndtere datoer
Bemærk, at i mit løsningsforslag er datoer hele vejen behandlet som
datoer - ikke som tekst. Den eneste fejl/"smutter" der kan opstå er
hvis der anvendes forsklligt sprog i database og i dit script.
Kig evt.:
<url:
http://www.asp-faq.dk/article/?id=47>
- som viser hvordan man sætter rigtig sprogkode
>Det er sikkert helt forkert sådan som jeg har lavet min kode på så jeg
>vil blive rigtig glad hvis der er en anden måde at gøre det på så det
>virker.
Forkert er det vel kun, hvis det ikke virker efter hensigten.
Der eksisterer ingen absolutte love inden for kodning, men man har da
lov til at lære af andres fejl - og sine egne.
Good luck!
--
Jørn Andersen,
Brønshøj