On Thu, 15 Mar 2007 14:03:38 +0100, "Claus Skaarup \(Arbejde\)"
<claus@limfjordsteatret.fejl> wrote:
>På min hjemmeside har jeg en kalender, hvor man kan søge på kalenderemner,
>dato, måned osv.
>
>Denne funktion: old1 = DATEADD("d",-90,date) går ind og ændrer et felt i
>databaseposten, så den ikke bliver vist i kalenderen, hvis den er over 90
>dage gammel. (et "0" bliver ændret til et "1" i et felt i databasen. Alle
>poster med art=1 bliver ikke vist i kalenderen) Jeg vil gerne have lavet det
>sådan, at i stedet for at alle poster ældre end 90 dage bliver ændret, så
>ændres i stedet i forhold til en sæson. Dvs. Alle poster indenfor
>intervallet 1/8-06 til 1/7-07 bliver vist. Ældre bliver ikke vist.
>Det spændende er så, at det også gerne skulle virke af sig selv, når sæsonen
>hedder 07/08. Altså 1/8-07-1/7-08.
Er det altid den aktuelle sæson, der skal vises? Altså sådan at hvis fx
den aktuelle dato ligger imellem 1.8.06 og 1.7.07, så vises denne sæson?
Og hvad skal der i givet fald vises mellem 1.7.07 og 1.8.07?
Hvis vi fx går ud fra, at sæsonen 1.8.06-1.7.07 skal vises frem til
1.8.07, kunne man lave noget i retning af:
datStartAar = Year(Date)
If Month(Date) < 8 Then datStartAar = datStartAar - 1
strSqlStartDato = "DateSerial(" & datStartAar & ", 8, 1)"
strSqlSlutDato = "DateSerial(" & datStartAar + 1 & ", 7, 1)"
Det putter du så bare ind i din betingelse:
strSql = "... WHERE [datofelt] BETWEEN " & strSqlStartDato & _
" AND " & strSqlSlutDato & ";"
>PS: Indholdet i datofeltet ser sådan ud f.eks: "15-03-2007"
Skidt med, hvordan det "ser ud" - hvis det er gemt i et dato-felt, så
indeholder det en fuld dato-tid-værdi (som du så tilfældigvis har valgt
at præsentere på en bestemt måde i dit database-program). Værdien i
feltet ændrer sig ikke, selv om du ændrer format.
Ovenstående er under forudsætning af, at det er en MS Access db, da den
bruger de indbyggede dato-funktioner i den.
Good luck,
Jørn
--
Jørn Andersen, Brønshøj
ALLE danske tropper HJEM fra Irak, NU
Demonstrér 17. marts:
www.nejtilkrig.dk