Avatar billede wilweb Nybegynder
28. juli 2004 - 21:16 Der er 19 kommentarer og
1 løsning

udskriv skema fra access database

min database ser sådanne ud?
id    |navn    |    dato |    status
1    |Kim    |    11-05|    ind
1    |Kim    |    12-05|    ind
1    |Kim    |    13-05|    ind
1    |Kim    |    14-05|    ind
2    |ib    |    11-05|    ind
2    |ib    |    12-05|    ind
2    |ib    |    13-05|    ind
2    |ib    |    14-05|    ind
3    |Kent    |    11-05|    ind
3    |Kent    |    12-05|    ind
3    |Kent    |    13-05|    ind
3    |Kent    |    14-05|    ind

Hvordan får jeg den skrevet ud sådanne?

Navn     |11-5    |12-5     |13-5     | 14-5
ib    |ind    |ud    |ind    |ind
kent    |ind    |ud    |ind    |ind
kim    |ind    |ind    |ind    |ud

er kørt helt fast håber på lidt hjælp.
Avatar billede wilweb Nybegynder
28. juli 2004 - 21:17 #1
Sådanne her! ser det ud.
id    |navn    |    dato |    status
1    |Kim    |    11-05|    ind
1    |Kim    |    12-05|    ind
1    |Kim    |    13-05|    ud
1    |Kim    |    14-05|    ind
2    |ib    |    11-05|    ind
2    |ib    |    12-05|    ud
2    |ib    |    13-05|    ind
2    |ib    |    14-05|    ind
3    |Kent    |    11-05|    ind
3    |Kent    |    12-05|    ud
3    |Kent    |    13-05|    ind
3    |Kent    |    14-05|    ind


Navn     |11-5    |12-5     |13-5     | 14-5
ib    |ind    |ud    |ind    |ind
kent    |ind    |ud    |ind    |ind
kim    |ind    |ind    |ind    |ud
Avatar billede korup Nybegynder
28. juli 2004 - 21:25 #2
Kan du ikke starte med alle datoerne.

og så udskrive dem efter hianden.
der efer laver du dit kale og udksriver så kun status for brugeren.

/korup
Avatar billede eagleeye Praktikant
28. juli 2004 - 21:27 #3
Er der lige mange dato'er til alle personerne?

For så kan du lave en SQL som denne:

SQL = "select * from tabelnavn order by navn, dato"

Så den relativ let at udkrive. Er datoen fast eller er nogle gange 4 dagge andre gange 6 dage? Eller måske skal man spørge skal datoen udskrives fra databasen?
Avatar billede korup Nybegynder
28. juli 2004 - 21:28 #4
SELECT dato FROM tabel GROUP BY dato order by dato;

Udskriv dem.

SELECT navn, status FROM tabel order by dato;

Udskriv en række så længe navn er kim og så en ny række for hvert navn.

----

Ved ikke om det giver nogen mening eller giv mig lidt mere info omkring databasen, og lidt eksisternde kode.

/korup
Avatar billede wilweb Nybegynder
28. juli 2004 - 21:43 #5
Her er min kode, måske kender eagleeye noget af det igen?
Det jeg vil lave er et gammelsdags stempelur!

<!--#include file="conn/main.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Skema</title>
<link href="css/projekt.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
Session.LCID = 1030

if request.QueryString("uge") = "" then
    ugeNr = weekNr(date)
Else
    ugeNr = CInt(request.QueryString("uge"))
End if

'Find dato, første mandag i den valgte uge
dato = findMandag(ugeNr,Year(Date))
'Find ugens dage navne + dato
dagMandag = WeekdayName(DatePart("W", dato, 1))
dagMandag = UCase(Left(dagMandag,1)) & Mid(dagMandag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag1
dag1=Day(dato)&"-"&Month(dato)
'-----
dato = DateAdd("d", 1, dato)
dagTirsdag = WeekdayName(DatePart("W", dato, 1))
dagTirsdag = UCase(Left(dagTirsdag,1)) & Mid(dagTirsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag2
dag2=Day(dato)&"-"&Month(dato)
'--------
dato = DateAdd("d", 1, dato)
dagOnsdag = WeekdayName(DatePart("W", dato, 1))
dagOnsdag = UCase(Left(dagOnsdag,1)) & Mid(dagOnsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag3
dag3=Day(dato)&"-"&Month(dato)
'------
dato = DateAdd("d", 1, dato)
dagTorsdag = WeekdayName(DatePart("W", dato, 1))
dagTorsdag = UCase(Left(dagTorsdag,1)) & Mid(dagTorsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag4
dag4=Day(dato)&"-"&Month(dato)
'----------
dato = DateAdd("d", 1, dato)
dagFredag = WeekdayName(DatePart("W", dato, 1))
dagFredag = UCase(Left(dagFredag,1)) & Mid(dagFredag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag5
dag5=Day(dato)&"-"&Month(dato)
'------------------
'uge + / - 1
tmpDato = DateAdd("ww",1,dato)
ugeNrp= weekNr(tmpDato)
aarNrp= Year(tmpDato+3)
tmpDato = DateAdd("ww",-1,dato)
ugeNrm= weekNr(tmpDato)
aarNrm= Year(tmpDato+3)

%>
<form action="skema_x.asp" method="post" name="skemaform">
<table border="0" width="100%" cellspacing="2" cellpadding="5">
  <tr>
    <td colspan="6" class="tbl_text_kal" height="20">Uge <%=ugeNr%> </td>
  </tr>
  <tr align="left" class="tbl_log">
    <td width="200" height="20">Navn</td>
    <td width="100" height="20"><%=dagMandag%><%=dag1%></td>
    <td width="100" height="20"><%=dagTirsdag%><%=dag2%></td>
    <td width="100" height="20"><%=dagOnsdag%><%=dag3%></td>
    <td width="100" height="20"><%=dagTorsdag%><%=dag4%></td>
    <td width="100" height="20"><%=dagFredag%><%=dag5%></td>
  </tr>
  <tr>
  <%
 
  HER VIL JEG SÅ SKRIVE EN UGE OVERSIGT UD
  %>
  </tr>
</table>


<table align="center" width="400">
  <tr class="tbl_text_kal">
<%
    Response.Write("<td align='center'><a href='skema_x.asp?uge=" & ugeNrm & "'>Forrige uge</a></td> ")
    Response.Write("<td align='center'><a href='skema_x.asp?uge=" & ugeNrp & "'>Næste uge</a></td> ")
%>
  </tr>
</table>

</form>
<%
    Conn.Close
    Set Conn = Nothing
'Den første dag i indeværende uge:
    Function getDate(ByVal weekNr, ByVal startDate)
      If Not isDate(startDate) Then Exit Function
      dato = CDate(startDate)
      Do While DatePart("ww", dato, vbMonday, vbFirstFourDays) <> weekNr
          dato = DateAdd("d", 1, dato)
      Loop
      getDate = dato
    End Function
'find uge nummer
    Function weekNr (dtmDate)  ' Week Of Year
        weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays)
        If weekNr > 52 Then
            If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1
        End If
    End Function
'Find mandag i valgt uge,år
    function findMandag(uge,aar)
    d = DateSerial(aar, 1, 1)    ' 1/1/i år
    'find mandag i uge 1
        If DatePart("ww", d, 2, 2) = 1 Then    'Hvis 1/1 er i uge 1
          While(DatePart("w", d, 2, 2) <> 1)    'find sidste mandag
            d = DateAdd("d", -1, d)
          WEnd
        Else
          While(DatePart("ww", d, 2, 2) <> 1)  'find næste mandag
            d = DateAdd("d", 1, d)
          WEnd
        End If
    findMandag = DateAdd("d", 7*(uge-1), d) 'juster til ugenummer, mandag
    end function
%>
</body>
</html>
Avatar billede eagleeye Praktikant
28. juli 2004 - 21:47 #6
Så den skal kun hente de dage ud som er i ugen?
Avatar billede wilweb Nybegynder
28. juli 2004 - 21:49 #7
ja
Avatar billede eagleeye Praktikant
28. juli 2004 - 21:58 #8
Ok så bliver det noget med:

fraDato= Year(dagMandag) & "-" & Month(dagMandag) & "-" & Day(dagMandag)
tilDato= Year(dagFredag) & "-" & Month(dagFredag) & "-" & Day(dagFredag)
SQL = "select * from tabel where dato >= #" & fraDato & "# AND dato <= #" & tilDato & "# order by navn, dato"
Set Rs=Conn.Execute(SQL)
Response.Write "<table>"
Response.Write "<tr><td><%=dagMandag%></td><td><%=dagTirsdag%></td><td><%=dagOnsdag%></td><td><%=dagTorsdag%></td><td><%=dagFredag%></td>"
oldNavn=""
do while not Rs.EOF
  if oldNavn <> Rs("navn") then
    oldNavn = Rs("navn")
    Response.Write "</tr><tr><td>" & rs("navn") & "</td>"
  end if
  Response.Write "<td>" & Rs("status") & "</td>"
  rs.Movenext
loop
Response.Write "</tr></table>"
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:10 #9
jeg har lige ændret den til så den passer ind i min database!
når jeg kommer til siden første gang viser den ugedag og dato men ikke mere. Når jeg så trykker på næste uge kommer denne fejl:

Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typer stemmer ikke overens: '[string: "Mandag [26-7]"]'
/bjadmin/skema_x.asp, line 76

76 =
fraDato= Year(dagMandag) & "-" & Month(dagMandag) & "-" & Day(dagMandag)
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:15 #10
hov ja det var ikke datoer prøv at rette disse to linjer:

fraDato= Year(dagMandag) & "-" & Month(dagMandag) & "-" & Day(dagMandag)
tilDato= Year(dagFredag) & "-" & Month(dagFredag) & "-" & Day(dagFredag)


Til disse:
tilDato= Year(dato) & "-" & Month(dato) & "-" & Day(dato)
dato = DateAdd("d",-4,dato)
fraDato= Year(dato) & "-" & Month(dato) & "-" & Day(dato)
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:20 #11
det virker sgu mr. eagleeye:> Tusinde tak jeg accepterer og bukker dybt...
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:21 #12
Ok :)
Så laver jeg lige et svar.
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:40 #13
Æv der er lige noget galt prøv og se, tror du det kan fixes:

http://www.wilweb.dk/exp/skema.png

her er min kode:

<!--#include file="conn/main.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Skema</title>
<link href="css/projekt.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
Session.LCID = 1030

if request.QueryString("uge") = "" then
    ugeNr = weekNr(date)
Else
    ugeNr = CInt(request.QueryString("uge"))
End if

'Find dato, første mandag i den valgte uge
dato = findMandag(ugeNr,Year(Date))
'Find ugens dage navne + dato
dagMandag = WeekdayName(DatePart("W", dato, 1))
dagMandag = UCase(Left(dagMandag,1)) & Mid(dagMandag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag1
dag1=Day(dato)&"-"&Month(dato)&"-"&year(dato)
'-----
dato = DateAdd("d", 1, dato)
dagTirsdag = WeekdayName(DatePart("W", dato, 1))
dagTirsdag = UCase(Left(dagTirsdag,1)) & Mid(dagTirsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag2
dag2=Day(dato)&"-"&Month(dato)&"-"&year(dato)
'--------
dato = DateAdd("d", 1, dato)
dagOnsdag = WeekdayName(DatePart("W", dato, 1))
dagOnsdag = UCase(Left(dagOnsdag,1)) & Mid(dagOnsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag3
dag3=Day(dato)&"-"&Month(dato)
'------
dato = DateAdd("d", 1, dato)
dagTorsdag = WeekdayName(DatePart("W", dato, 1))
dagTorsdag = UCase(Left(dagTorsdag,1)) & Mid(dagTorsdag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag4
dag4=Day(dato)&"-"&Month(dato)
'----------
dato = DateAdd("d", 1, dato)
dagFredag = WeekdayName(DatePart("W", dato, 1))
dagFredag = UCase(Left(dagFredag,1)) & Mid(dagFredag,2) & " [" & Day(dato) & "-" & Month(dato)& "]"
'trækker dato ud af dag5
dag5=Day(dato)&"-"&Month(dato)&"-"&year(dato)
'------------------
'uge + / - 1
tmpDato = DateAdd("ww",1,dato)
ugeNrp= weekNr(tmpDato)
aarNrp= Year(tmpDato+3)
tmpDato = DateAdd("ww",-1,dato)
ugeNrm= weekNr(tmpDato)
aarNrm= Year(tmpDato+3)

%>
<form action="skema_x.asp" method="post" name="skemaform">
<table border="0" width="100%" cellspacing="2" cellpadding="5">
  <tr>
    <td colspan="6" class="tbl_text_kal" height="20">Uge <%=ugeNr%> </td>
  </tr>

  <%
fraDato= dag1
tilDato= dag5
SQL = "select * from loginelev where sdato >= #" & fraDato & "# AND sdato <= #" & tilDato & "# order by strnavn, sdato"
Set Rs=Conn.Execute(SQL)

Response.Write "<tr><td class='tbl_log'>Navn</td><td class='tbl_log'>" & dagMandag & "</td><td class='tbl_log'>" & dagTirsdag & "</td><td class='tbl_log'>" & dagOnsdag & "</td><td class='tbl_log'>" & dagTorsdag & "</td><td class='tbl_log'>" & dagFredag & "</td>"
oldNavn=""
do while not Rs.EOF
  if oldNavn <> Rs("strnavn") then
    oldNavn = Rs("strnavn")
    Response.Write "</tr><tr class='tbl_text_kal'><td>" & rs("strnavn") & "</td>"
  end if
  Response.Write "<td>" & Rs("sdato") & "</td>"
  rs.Movenext
loop
Response.Write "</tr>"
  %>

  <tr class="tbl_log">
<%
    Response.Write("<td align='center'><a href='skema_x.asp?uge=" & ugeNrm & "'>Forrige uge</a></td> ")
    Response.Write("<td align='center'><a href='skema_x.asp?uge=" & ugeNrp & "'>Næste uge</a></td> ")
    Response.Write("<td align='center' colspan='4'></td> ")
%>
  </tr>
</table>

</form>
<%
    Conn.Close
    Set Conn = Nothing
'Den første dag i indeværende uge:
    Function getDate(ByVal weekNr, ByVal startDate)
      If Not isDate(startDate) Then Exit Function
      dato = CDate(startDate)
      Do While DatePart("ww", dato, vbMonday, vbFirstFourDays) <> weekNr
          dato = DateAdd("d", 1, dato)
      Loop
      getDate = dato
    End Function
'find uge nummer
    Function weekNr (dtmDate)  ' Week Of Year
        weekNr = DatePart("ww", dtmDate, vbMonday, vbFirstFourDays)
        If weekNr > 52 Then
            If DatePart("ww", dtmDate + 7 , vbMonday, vbFirstFourDays) = 2 Then weekNr = 1
        End If
    End Function
'Find mandag i valgt uge,år
    function findMandag(uge,aar)
    d = DateSerial(aar, 1, 1)    ' 1/1/i år
    'find mandag i uge 1
        If DatePart("ww", d, 2, 2) = 1 Then    'Hvis 1/1 er i uge 1
          While(DatePart("w", d, 2, 2) <> 1)    'find sidste mandag
            d = DateAdd("d", -1, d)
          WEnd
        Else
          While(DatePart("ww", d, 2, 2) <> 1)  'find næste mandag
            d = DateAdd("d", 1, d)
          WEnd
        End If
    findMandag = DateAdd("d", 7*(uge-1), d) 'juster til ugenummer, mandag
    end function
%>
</body>
</html>
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:43 #14
At den udskriver datoen?

Skulle det ikke være kolonne som hedder status som skulle udskrives her?:
  Response.Write "<td>" & Rs("sdato") & "</td>"
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:46 #15
jo men det blev lige skiftet ud så jeg kunne se om datoerne blev skrevet ud i de rigtige rækker!
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:48 #16
Du kan se at Kim Dannerfjord, har ikke været der d. 27 og men har været der den 28 og så skrives d. 28 i rækken under den 27.
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:51 #17
Ja det kode jeg har vist giver problemer hvis der er huller i datoen.
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:55 #18
Så prøv at rette det til:




oldNavn=""
do while not Rs.EOF
  if oldNavn <> Rs("strnavn") then
    oldNavn = Rs("strnavn")
    oldDato=dag1
    Response.Write "</tr><tr class='tbl_text_kal'><td>" & rs("strnavn") & "</td>"
  end if
  i=0
  do while CDate(oldDato) < CDate(rs("sdato")) or i<5
    oldDato=DateAdd("d",1,oldDato)
    response.write "<td></td>"
    i=i+1
  loop
  Response.Write "<td>" & Rs("sdato") & "</td>"
  oldDato=DateAdd("d",1,oldDato)
  rs.Movenext
loop
Response.Write "</tr>"
Avatar billede eagleeye Praktikant
28. juli 2004 - 22:56 #19
Arh sådan her:

oldNavn=""
do while not Rs.EOF
  if oldNavn <> Rs("strnavn") then
    oldNavn = Rs("strnavn")
    oldDato=dag1
    Response.Write "</tr><tr class='tbl_text_kal'><td>" & rs("strnavn") & "</td>"
  end if
  i=0
  do while CDate(oldDato) < CDate(rs("sdato")) and i<5
    oldDato=DateAdd("d",1,oldDato)
    response.write "<td></td>"
    i=i+1
  loop
  Response.Write "<td>" & Rs("sdato") & "</td>"
  oldDato=DateAdd("d",1,oldDato)
  rs.Movenext
loop
Response.Write "</tr>"
Avatar billede wilweb Nybegynder
28. juli 2004 - 22:59 #20
Hvad lever du af? jeg vil sgu på den kost! det virker bare for fedt :>
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