Avatar billede psyclown Nybegynder
26. august 2003 - 16:07 Der er 6 kommentarer og
1 løsning

hente output af flere gange

Jeg er igang med at lave et vagtplan-system, hvor der er en kalender og når man trykker på en af datoerne i kalenderen, så kommer der et skema frem med de timer hvor der er åbent også kan man sætte sig selv til at tage en eller flere vagter og man kan slette sine vagter.

Jeg vil gerne have sådan at når man trykker på et navn i den vagtplan, så kommer der en plan over de vagter som den person man har trykket på har. Det er der jo ikke nogle ben i, men vagterne skal vælges og udskrives på følgende måde, hvis det kan lade sig gøre:

f.eks. hvis man har følgende inputs i sin tabel:

tid    dte            tme    vagt
1    24-08-2003    12:00    Jesper Jensen
2    24-08-2003    21:00    Jesper Jensen
3    24-08-2003    22:00    Jesper Jensen
4    24-08-2003    23:00    Jesper Jensen
6    28-08-2003    13:00    Jesper Jensen
7    28-08-2003    14:00    Jan Schmidt
8    25-08-2003    19:00    Jesper Jensen
9    25-08-2003    14:00    Jesper Jensen
10    25-08-2003    15:00    Jan Schmidt
11    25-08-2003    16:00    Jan Schmidt
12    25-08-2003    17:00    Jesper Jensen
13    25-08-2003    18:00    Jesper Jensen

Så skal det skrives ud på følende måde, hvis man f.eks. har valgt Jesper Jensen:

24-08-2003 kl. 12:00
24-08-2003 kl. 21:00-23:00
28-08-2003 kl. 13:00
25-08-2003 kl. 14:00
25-08-2003 kl. 17:00-19:00

Det kommer nok ikke til at stå på helt samme måde, men det er bare præncippet i det.
Hvis det kan lade sig gøre, så vil jeg gerne høre hvordan jeg skulle kunne klarer den.

På forhånd tak!
Avatar billede netro Nybegynder
26. august 2003 - 17:34 #1
Prøv at leg lidt med følgende;

Set rs = Conn.Execute("Select dte, tme From Tabel Where vagt = 'Jesper Jensen' Order By dte, tme")
tme_temp = rs("dte") " " & rs("tme")
Hours = 0
While Not rs.EOF
  tme_this = rs("dte") " " & rs("tme")
  If DateDiff("h", tme_temp, tme_this) = 1 Then
      Hours = Hours + 1
  Else
      Response.Write DateAdd("h", -Hours, tme_temp) & " - " & tme_temp & "<br>"
      Hours = 0
  End If
  tme_temp = rs("dte") " " & rs("tme")
  rs.MoveNext
Wend
 
Du bør i øvrigt have en seperat tabel til navnene, så du undgår alle de gentagelser. F.eks. vil navnet Casper Jensen kun ligge ét sted, mens han ID-nummer vil stå flere steder i din ovenstående tabel.
Avatar billede netro Nybegynder
26. august 2003 - 17:36 #2
Der mangler lige et &-tegn efter rs("dte") alle tre steder.
Avatar billede psyclown Nybegynder
27. august 2003 - 19:52 #3
Har lavet lidt om i scriptet, så den ikke skriver f.eks. 12:00:00 - 12:00:00 når der kun er en dato.

Set rsPlan = conntemp.Execute("SELECT dte, tme FROM vagtplan WHERE vagt = '"& rsNavn("navn") &"' ORDER BY dte, tme")
tme_temp = rsPlan("dte") &" "& rsPlan("tme")
Hours = 0
While Not rsPlan.EOF
    tme_this = rsPlan("dte") &" "& rsPlan("tme")
    If DateDiff("h", tme_temp, tme_this) = 1 Then
        Hours = Hours + 1
    Else
        If Hours > 0 Then
            Response.Write DateAdd("h", -Hours, tme_temp) &" - "& tme_temp &"<br>"
        Else
            Response.Write tme_temp &"<br>"
        End If
        Hours = 0
    End If
    tme_temp = rsPlan("dte") &" "& rsPlan("tme")
    rsPlan.MoveNext
Wend
rsPlan.Close
Set rsPlan = Nothing

Der er en lille fejl i det, den skriver den første dato den finder 2 gange også skriver den ikke den sidste dato ud f.eks. nu har jeg dette i tabellen:

tid    dte            tme    vagt
1    24-08-2003    12:00    Jesper Jensen
2    24-08-2003    21:00    Jesper Jensen
4    24-08-2003    23:00    Jesper Jensen
7    28-08-2003    14:00    Jan Schmidt
8    25-08-2003    19:00    Jesper Jensen
9    25-08-2003    14:00    Jesper Jensen
10    25-08-2003    15:00    Jan Schmidt
11    25-08-2003    16:00    Jan Schmidt
12    25-08-2003    17:00    Jesper Jensen
13    25-08-2003    18:00    Jesper Jensen
15    28-08-2003    13:00    Jesper Jensen
16    27-08-2003    21:00    Jesper Jensen
17    27-08-2003    22:00    Jesper Jensen

Hvis jeg så skal hente dem med Jesper Jensen så skriver den følgende ud:

24-08-2003 12:00:00
24-08-2003 12:00:00
24-08-2003 21:00:00
24-08-2003 23:00:00
25-08-2003 14:00:00
25-08-2003 17:00:00 - 25-08-2003 19:00:00
27-08-2003 21:00:00 - 27-08-2003 22:00:00
28-08-2003 13:00:00
29-08-2003 14:00:00 - 29-08-2003 15:00:00

Jeg har prøvet at kigge lidt på det, men jeg kan ikke lige finde fejlen, håber du kan :)
Avatar billede psyclown Nybegynder
27. august 2003 - 19:55 #4
Hov det var lige en forkert tabel, her er den rigtige:

tid    dte            tme    vagt
1    24-08-2003    12:00    Jesper Jensen
2    24-08-2003    21:00    Jesper Jensen
4    24-08-2003    23:00    Jesper Jensen
7    28-08-2003    14:00    Jan Schmidt
8    25-08-2003    19:00    Jesper Jensen
9    25-08-2003    14:00    Jesper Jensen
10    25-08-2003    15:00    Jan Schmidt
11    25-08-2003    16:00    Jan Schmidt
12    25-08-2003    17:00    Jesper Jensen
13    25-08-2003    18:00    Jesper Jensen
15    28-08-2003    13:00    Jesper Jensen
16    27-08-2003    21:00    Jesper Jensen
17    27-08-2003    22:00    Jesper Jensen
18    29-08-2003    14:00    Jesper Jensen
19    29-08-2003    15:00    Jesper Jensen
20    29-08-2003    19:00    Jesper Jensen
21    29-08-2003    20:00    Jesper Jensen
22    29-08-2003    21:00    Jesper Jensen
23    29-08-2003    22:00    Jesper Jensen
Avatar billede netro Nybegynder
27. august 2003 - 20:27 #5
Set rsPlan = conntemp.Execute("SELECT dte, tme FROM vagtplan WHERE vagt = '"& rsNavn("navn") &"' ORDER BY dte, tme")
tme_temp = rsPlan("dte") & " "& rsPlan("tme")
Hours = 0
While Not rsPlan.EOF
    tme_this = rsPlan("dte") & " "& rsPlan("tme")
    If DateDiff("h", tme_temp, tme_this) = 1 Then
        Hours = Hours + 1
    ElseIf DateDiff("h", tme_temp, tme_this) > 1 Then
        If Hours > 0 Then
            Response.Write DateAdd("h", -Hours, tme_temp) &" - "& tme_temp &"<br>"
        Else
            Response.Write tme_temp &"<br>"
        End If
        Hours = 0
    End If
    tme_temp = rsPlan("dte") & " "& rsPlan("tme")
    rsPlan.MoveNext
Wend

If Hours > 0 Then
  Response.Write DateAdd("h", -Hours, tme_temp) &" - "& tme_temp &"<br>"
Else
  Response.Write tme_temp &"<br>"
End If

=============================================

For at forhindre den første post i at blive udskrevet, tjekker den nu, om forskellen mellem tme_temp og tme_this er større end 1.
For at få den sidste udskrevet, har jeg tilføjet de 5 sidste linier, der er identiske med dem inde i løkken.
Avatar billede psyclown Nybegynder
27. august 2003 - 20:33 #6
jamen så virker det jo, så skal du bare lige svarer så du kan få nogle point.

Så skal jeg nok huske at skrive den "god title" første gang, næste gang...kan godt forstå at det er irriterende, men jeg havde helt ærligt ikke nogen ide om hvad jeg skulle skrive.
Det er også første gang at jeg har fået en "påmindelse" om det :D

Men nok om det og mange tak for hjælpen!
Avatar billede netro Nybegynder
27. august 2003 - 20:35 #7
:-)
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