Avatar billede sorenmt84 Juniormester
16. december 2007 - 23:16 Der 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 "&nbsp;"
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)
Avatar billede fennec Nybegynder
17. december 2007 - 11:12 #1
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
Avatar billede sorenmt84 Juniormester
17. december 2007 - 11:36 #2
Det jeg har gang i er at jeg har periode

fx startdato 01-12-2007 og slutdato 31-12-2007

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
Avatar billede sorenmt84 Juniormester
17. december 2007 - 11:39 #3
hov... fik lige trykket hurtigt nok...

Altså har jeg perioden 01-12-2007 til 31-12-2007

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
Avatar billede fennec Nybegynder
17. december 2007 - 12:54 #4
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.
Avatar billede sorenmt84 Juniormester
17. december 2007 - 15:11 #5
Vil gerne have holdt udtrækket fra db'en uden for

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
Avatar billede fennec Nybegynder
17. december 2007 - 15:33 #6
Det er bare meget omstændig at løbe alle rækker i dit recordset igennem for at tjekke om datoerne passer.

Men koden fra min første post burde virke.
Avatar billede sorenmt84 Juniormester
08. oktober 2010 - 18:48 #7
lukker...
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