07. december 2007 - 15:40Der er
6 kommentarer og 1 løsning
Er dato inden for givet område?
Har 2 datoer
dato_start og dato_slut Som fx kan være: dato_start = "2007-12-01" dato_slut = "2007-12-31"
Jeg har så ligeledes 2 datoer fra en db dato_fra og dato_til
Jeg skal bruge et en lille if sætning der kan kontrollere om mine datoer fra databsen er inden for mit dato interval, så der fx står "OK" hvis datoen fra db er inden for området, eller "Fejl" hvis det er uden for
Det er nok at bare en af datoerne rammer inden for... perioden må fx godt starte den 28-11-2007, bare den så slutter den 01-12-2007 eller senere. Tilsvarende må den også godt starte den 24-12-2007 og slutte den 03-01-2008
If dato_fra >= dato_start And dato_fra <= dato_slut Then Så er dato_fra i intervallet. Elseif dato_til >= dato_start And dato_til <= dato_slut Then Så er dato_til i intervallet. End If
.. Du kan også slå det sammen, hvis der bare sker det samme alligevel
If (dato_fra >= dato_start And dato_fra <= dato_slut) Or (dato_til >= dato_start And dato_til <= dato_slut) Then Response.Write "OK" End If
Jeg havde faktisk fået skrevet noget sludder... Det jeg har er at jeg har dato_start og dato_slut Jeg kører så en lykke der starter ved dato_start og går en dag frem ad gangen til og med dato_slut
Det jeg engentlig skal bruge er så noget der kan holde mine dater fra min db op i mod det (dato_fra og dato_til)
hvis min periode er 01/12 til 24/12 får jeg altså en lykke der hedder 1/12 2/12 3/12 osv. hvis min post i dben så er den 2/12 til den 4/12 skal det give følgende i min if-sætning 1/12 nej 2/12 ja 3/12 ja 4/12 ja 5/12 nej
osv osv.
Beklager fejlen, håber du vil hjælpe, ellers laver jeg et nyt
Okay, så prøver jeg at se om jeg forstår det rigtigt nu :)
Set rs = Conn.Execute("SELECT [dato_fra],[dato_til] FROM [table] WHERE ([dato_fra] BETWEEN "&dato_start&" And "&dato_slut&") And ([dato_til] BETWEEN "&dato_start&" And "&dato_slut&")") Do While Not rs.EOF Response.Write "Disse elementer burde så være de rigtige måske? :P" Loop
Eller måske ikke helt .. disse finder alle de intervaller i intervallet mellem stat og slut ... Så hvis du vil have præcis hvilke dato dette er kan du sætte en løkke ind:
Do While Not rs.EOF For i = rs("dato_fra") to rs("dato_til") Response.Write "Her kommer så de i'er (datoer) som findes.." Next Loop
for i=dato_start to dato_slut response.write i post_i_db=rs("dato") if post_i_db=i response.write "ok" else response.write "nej" end if next
Aner ikke om det er noget i den stil du leder efter, eller om det er volapyk jeg skriver. Men det du skal er vel bare at sammenligne det du enten løkker ud, eller looper ud med værdien i db.
Det jeg nu skal have gjort er at jeg skal have koblet en if-sætning på mit udtræk, så jeg kan få en givet tekst alt efter hvordan udtrækket passer i min formel!
For at beskrive det kort er det til en kalender. Ned af har jeg en række opgaver (Y) og henad har jeg en måned, delt op på dage (X)
Fx: Opgave/Dag 1 2 3 4 Opg1 x x Opg2 x Opg3 x x x x
Mit db udtræk henter alle de opgaver der ligger inden for måden, altså hvor dato_fra starter i månden, eller hvor dato_fra starter tidligere, men dato_til så slutter i månden, eller begge er inden for. De bliver listet ned af Y. Jeg har så et loop der laver X-akslen, med en kolonne for hver dag i måden, det jeg så skal bruge er at jeg skal have sat et "X" eller noget andet i de kolonner, ud for den enkelte opgave, hvor den er aktuel
For at gøre en lang historie kort, så har jeg fx et interval der hedder 2007-12-01 (dato_start) til 2007-12-31 (dato_fra)
Det jeg så skal have er en If-sætning der løber den enkelte opgaves tidsrum igennem (dato_fra og dato_til) igennem - If sætningen vil blive kørt for hver enkelt opgave, en gang for hver dag i perioden og det jeg så skal opnå er at jeg for opg1 for markering den 1. og den 2. men fra den 3. - 31. skal der ikke markes noget
Jeg har lavet et simpelt loop
nr = 1 Do while nr <= day(dato_slut) if nr <= 9 then nr = "0" & nr end if
nr = nr+1 loop den laver de enkelte dage i løkken
nr bliver brug til at lave en dato-string således: year(dato_start) & "-" & month(dato_start) & "-" & nr
så jeg altså får listet som følger:
2007-12-01 2007-12-02 2007-12-03 osv.
i mellem min do while og loop skal jeg så have lagt if-sætningen ind der tager den enkelte dag (fx 2007-12-01) og holder den op i mod dato_fra og dato_til i db'en og ser om den aktuelle dag ligger inden for de to datoer
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.