Avatar billede sorenmt84 Juniormester
19. september 2007 - 22:16 Der er 9 kommentarer og
1 løsning

Tjek om post er inden for datointerval

Har dette udtræk, som skal tjekke om en given post er inden for et dato interval og er posten det, skal den markeres med en anden farve på listen. Mit problem er bare at blot der er en post, der matcher i tabellen "projekter_medarbejdere" bliver den markert, selvom det måske ikke er inden for dato intervallet.
Det skal kort og godt være sådan at hvis der findes en post i projekter_medarbejdere hvor ref_projekt <> rs_id("id") og ref_medarb = rs("id") - samt dato_fra og dato_til falder inden for de datoer der er angivet i projekter_medarbejdere (dato_fra og dato_til) - Så skal linjen markes med rød og ellers så bare stå med sort
Avatar billede kalp Novice
19. september 2007 - 22:29 #1
må man se din nuværende sql?
Avatar billede sorenmt84 Juniormester
19. september 2007 - 22:39 #2
Hov ja selvfølgelig:

dato_fra = year(rs_id("dato_fra")) & "-" & month(rs_id("dato_fra")) & "-" & day(rs_id("dato_fra"))
dato_til = year(rs_id("dato_til")) & "-" & month(rs_id("dato_til")) & "-" & day(rs_id("dato_til"))
Set rs_medkon =  Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM projekter_medarbejdere WHERE CDate(dato_fra) >= #" & dato_fra & "# and ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " or CDate(dato_til) <= #" & dato_til & "# and ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " ;"
'strSQL = "SELECT * FROM projekter_medarbejdere WHERE dato_fra >= " & rs_id("dato_fra") & " and ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " or dato_til <= " & rs_id("dato_til") & " and ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " ;"

Set rs_medkon = Conn.Execute(strSQL)
if rs_medkon.eof or rs_medkon.bof then
response.write rs("navn") & "<br>"
else
do until rs_medkon.eof or rs_medkon.bof
color = "#FF0000"
response.write "<font color=""" & color & """ title="""
Set rs_pro =  Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM projekter where id = " & rs_medkon("ref_projekt")
rs_pro.open sql, conn, 1, 3
response.write rs_pro("overskrift") & "&nbsp;(" & rs_medkon("dato_fra") & " - " & rs_medkon("dato_til") & ")"
rs_pro.Close
Set rs_pro = Nothing
response.write """>" & rs("navn") & "</font><br>"
rs_medkon.movenext
loop
end if
Set rs_medkon = Nothing
Avatar billede kalp Novice
19. september 2007 - 22:54 #3
går ud fra du har kolonnerne dato_til og dato_fra i databasen..

men prøv


dato_fra = year(rs_id("dato_fra")) & "-" & month(rs_id("dato_fra")) & "-" & day(rs_id("dato_fra"))
dato_til = year(rs_id("dato_til")) & "-" & month(rs_id("dato_til")) & "-" & day(rs_id("dato_til"))
Set rs_medkon =  Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM projekter_medarbejdere WHERE (CDate(dato_fra) >= #" & dato_fra & " # and CDate(dato_til) <= #" & dato_til & "#) and ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " "

Set rs_medkon = Conn.Execute(strSQL)
if rs_medkon.eof or rs_medkon.bof then
response.write rs("navn") & "<br>"
else
do until rs_medkon.eof or rs_medkon.bof
color = "#FF0000"
response.write "<font color=""" & color & """ title="""
Set rs_pro =  Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM projekter where id = " & rs_medkon("ref_projekt")
rs_pro.open sql, conn, 1, 3
response.write rs_pro("overskrift") & "&nbsp;(" & rs_medkon("dato_fra") & " - " & rs_medkon("dato_til") & ")"
rs_pro.Close
Set rs_pro = Nothing
response.write """>" & rs("navn") & "</font><br>"
rs_medkon.movenext
loop
end if
Set rs_medkon = Nothing
Avatar billede sorenmt84 Juniormester
19. september 2007 - 23:13 #4
Lige ved og næsten...

Det virker fint, såfremt at startdatoen ikke er samme dag som slutdatoen i databsen, ligger startdatoen før er der ingen problemer!
Avatar billede kalp Novice
19. september 2007 - 23:21 #5
hvad sker der helt præcist?
mere så jeg kan tilpasse sql'en korrekt:)
Avatar billede sorenmt84 Juniormester
19. september 2007 - 23:46 #6
Jeg har fx et projekt der løber fra den 17-19/9

Laver jeg et nyt projekt der hedder den 19-19/9 - Giver den ikke udslag (farver det rødt)
Avatar billede sorenmt84 Juniormester
19. september 2007 - 23:48 #7
Hov var lige hurtig nok...

Laver jeg et der hedder den 17-19 (endnu et) bliver det fint nok farvet
18-19 bliver det ikke farvet
19-20 heller ikke farvet
14-17 heller ikke farvet
17-19 bliver det fint farvet

Håber du kan finde lidt system i det. Alle dem jeg har listet her burde alle være farvet
Avatar billede kalp Novice
19. september 2007 - 23:51 #8
det er jo lidt indforstået for dig hvordan det hænger sammen:) kan ikke helt gennemskue det.

kan du prøve følgende

dato_fra = year(rs_id("dato_fra")) & "-" & month(rs_id("dato_fra")) & "-" & day(rs_id("dato_fra"))
dato_til = year(rs_id("dato_til")) & "-" & month(rs_id("dato_til")) & "-" & day(rs_id("dato_til"))
Set rs_medkon =  Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM projekter_medarbejdere WHERE (CDate(dato_fra) >= #" & dato_fra & " # and CDate(dato_til) <= #" & dato_til & "#) and (ref_medarb = " & rs("id") & " and ref_projekt <> " & rs_id("id") & " )"
Avatar billede sorenmt84 Juniormester
20. september 2007 - 00:19 #9
Det sidste forslag gør at den nogle gange skriver navne dobbelt,
Men jeg har testet det første lidt nærmere, og det eneste sted det ikke virker, er hvis start og slut dato er den samme

Fx hvis jeg laver et projekt der hedder den 20-22
og efterfølgende laver et der hedder den 21-21 så skulle den gerne ha været rød... men nej er den desværre ikke.
Altså når jeg har projekter kun på en dag går det galt... Det sjove er så at tilføjer jeg bare mere end et navn til listen, altså min 2 så virker den fint, men ikke hvis der kun er et navn
Avatar billede sorenmt84 Juniormester
08. oktober 2010 - 18:50 #10
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