16. december 2007 - 23:16Der er
6 kommentarer og 1 løsning
Er dato inden for interval
Har en startdato, fx 01-12-2007 og slutdato 31-12-2007
Jeg henter så en række aktiviteter ud af en db, som ligger inden for området, dette indsættes i en tabel, hvor jeg har mine aktiviter nedad (Y) og alle dage henad (X). Jeg har nu en if-sætning der skal tjekke om den enkelte aktivitet, kører den dag, som man nu er på (det løbes igennem en dag af gangen for hver aktivitet i perioden)
Jeg har indtil videre dette:
if "" & cdate(rs_projekt("dato_fra")) & "" = "" & nr & "-" & month(dato_start) & "-" & year(dato_start) & "" or "" & cdate(rs_projekt("dato_til")) & "" = "" & nr & "-" & month(dato_start) & "-" & year(dato_start) & "" or "" & cdate(rs_projekt("dato_fra")) & "" <= "" & nr & "-" & month(dato_start) & "-" & year(dato_start) & "" and "" & cdate(rs_projekt("dato_til")) & "" >= "" & nr & "-" & month(dato_start) & "-" & year(dato_start) & "" then response.write "X" else response.write " " end if
Det virker helt efter hensigten, men jeg mangler lidt... Er det en aktivitet, på en enkelt dag, eller over flere dage hvor start og slut er inden for perioden, er alt fint.
Men jeg har fx en aktivitet der starter den 28-11-2007 og slutter den 02-11-2007, der får jeg kun markeret den sidste dag (2/12), men hvad skal jeg lige koble på for at få alle dage, bagud i tiden også (i dette tilfælde selvfølgelig kun den 1/12 der mangler, da resten af dagene ligger uden for min periode)
Jeg er ikke helt med på hvad du har gang i, men du skal vist have fat i ASP's dato funktioner:
if cdate(rs_projekt("dato_fra")) <= dateserial(year(dato_start), month(dato_start), nr) or cdate(rs_projekt("dato_til")) >= dateserial(year(dato_start), month(dato_start), nr) then
det kører jeg igennem en løkke, hvor jeg tæller en dag op ad gangen. Altså 01-12-2007 02-12-2007 03-12-2007 osv osv
På den enkelte dato, skal jeg så ha holdt 2 nye datoer op fra min database (felterne dato_fra og dato_til) Hvis en af de 2 db felter er = den aktuelle dag jeg er på i min løkke, eller datoen i løkken ligger inden for min periode
og jeg har en post i min db der har start 28-11-2007 og slut 03-12-2007 så skal jeg have en markering på det (mit X) i if-sætningen den 01/12, 2/12 og 3/12
Ok, så ville jeg køre en select for hver dag i en løkke. Noget i denne stil:
startdato = dateserial(2007,12,1) slutDato = dateserial(2007,12+1,0) for f=0 to datediff("d",startdato,slutDato) tmpDato = dateadd("d",f,startdato) sql = "select * from dinTabel where startDato<=#"& tmpDato &"# and endDate>=#"& tmpDato &"#" set rs = conn.execute(sql) while not rs.eof response.write "...NogetTekst..." rs.MoveNext wend next
Du skal nok have formateret din dato til din database kommunikationsformat.
så jeg har mine datoer fra db'en (fx 28-11-2007 og 03-11-2007) og jeg så kan lave en if-sætning der tjekker op på om den aktuelle dato er inden for min periode
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.