20. marts 2004 - 16:27Der er
2 kommentarer og 1 løsning
tjek om dagen er noget
Jeg har et kalender script, og det vil jeg gerne have at den tjekker om der sker noget den dag, fra en database, også går videre til næste dag, og forsætte hele måneden igennen, den skal også tjekke om den er midt i en periode. Hvordan laver man det sådan så det ikke tage så lang tid???
sriptet hvor den lave dagene:
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb") strSQL = "select * from kalender ORDER BY id DESC" set rs = Conn.execute(strSQL)
do while maaned = getMonth(startdato)
if (GetDayOfWeek(startdato)) = 1 and (startdato <> dato) then strHTML = strHTML & "</td></tr><tr class='lookup'><td class='lookupWeek'>" & GetWeekOfYear(startdato) & "</td>" end if
strHTML = strHTML & "<td"
do until rs.eof
if (rs("datofra") <> "" and rs("datotil") <> "" and rs("datofra") <= startdato and rs("datotil") >= startdato) then strHTML = strHTML & " class='lookupselected'" end if
Du mangler en rs.MoveNext inde i det do unitl rs.eof loop, hvis ikke du har det vil siden "hænge", prøv at tilføje den sådan her:
do until rs.eof
if (rs("datofra") <> "" and rs("datotil") <> "" and rs("datofra") <= startdato and rs("datotil") >= startdato) then strHTML = strHTML & " class='lookupselected'" end if
jeg har fået lavet et script som virker men jeg synes at den går lidt for meget ind i databasen, kan man lave så den kun gør det en gang?
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb") strSQL = "select * from kalender ORDER BY id DESC" set rs = Conn.execute(strSQL)
do while maaned = getMonth(startdato)
strSQL = "select * from kalender ORDER BY id DESC" set rs = Conn.execute(strSQL)
if (GetDayOfWeek(startdato)) = 1 and (startdato <> dato) then strHTML = strHTML & "</td></tr><tr class='lookup'><td class='lookupWeek'>" & GetWeekOfYear(startdato) & "</td>" end if
strHTML = strHTML & "<td"
do until rs.eof
if (rs("datofra") <> "" and rs("datotil") <> "" and rs("datofra") <= startdato and rs("datotil") >= startdato) then strHTML = strHTML & " class='lookupselected'" end if
Ja det gør den i princippet også den hendter alt ud fra kalenderen for hvor dag i månede: strSQL = "select * from kalender ORDER BY id DESC"
Så du skal nok overveje at lave SQL sætningn sådan den kun hendter eventes ud for den valgte dag som er startdato.
Så de er at få denne if sætninge lavet om til en WHERE del:
dato = Year(startdato) & "-" & Month(startdato) & "-" & Day(startdato) strSQL = "select * from kalender WHERE datofra <= #" & dato & "# AND datotil >= #" & dato & "# ORDER BY id DESC"
---
Alternativ lave sådan den hendter alle evnts for månede ude foran det første loop og lave det andet om sådan databsen kun tilgåes en gang.
strSQL = "select * from kalender WHERE (month(datofra)=" & maaned & " or month(datotil)=" & maaned & ") and year(datofra)=" & getYear(startdato) &" ORDER BY datofra DESC" set rs = Conn.execute(strSQL)
do while maaned = getMonth(startdato)
if (GetDayOfWeek(startdato)) = 1 and (startdato <> dato) then strHTML = strHTML & "</td></tr><tr class='lookup'><td class='lookupWeek'>" & GetWeekOfYear(startdato) & "</td>" end if
strHTML = strHTML & "<td"
do until rs.EOF if (rs("datofra") <> "" and rs("datotil") <> "" and rs("datofra") <= startdato and rs("datotil") >= startdato) then strHTML = strHTML & " class='lookupselected'" else Exit do end if
rs.MoveNext if not rs.EOF then if rs("datofra") > startdato then Exit Do end if loop
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.