Avatar billede figora Nybegynder
20. marts 2004 - 16:27 Der 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
       
       
        loop
       
       
        strHTML = strHTML & "><a href=java script:void("");>" & GetDayOfMonth(startdato) & "</a></td>"
        startdato = startdato + 1
       
       
    loop


Conn.Close
Set Conn = Nothing
Avatar billede eagleeye Praktikant
20. marts 2004 - 16:30 #1
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
       
        rs.MoveNext
        loop
Avatar billede figora Nybegynder
21. marts 2004 - 11:51 #2
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
       
        rs.MoveNext
        loop
       
       
        strHTML = strHTML & "><a href=java script:void("");>" & GetDayOfMonth(startdato) & "</a></td>"
        startdato = startdato + 1
       
       
    loop


Conn.Close
Set Conn = Nothing

sådan mener jeg at den ser ud, har ikk den lige her.
Avatar billede eagleeye Praktikant
21. marts 2004 - 12:54 #3
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
       
        strHTML = strHTML & "><a href=java script:void("");>" & GetDayOfMonth(startdato) & "</a></td>"
        startdato = startdato + 1
       
       
    loop


Conn.Close
Set Conn = Nothing
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester