Avatar billede wilweb Nybegynder
10. januar 2004 - 17:03 Der er 5 kommentarer og
1 løsning

dato / uge / dag problemer så det batter!

Jeg ved ikke om i kan forstå mit sammesatte ASP, men anyway så prøver jeg om jeg kan få hjælp her.

Jeg forsøger på at lave et skema, Hvorm man kan bogføre hvornår og hvem der har været til stede.

Jeg er kommet til at dage navne skal skifte efter hvilken uge man er i eller den som man har trykket sig frem til.

Sagen er at jeg ikke ved hvordan jeg skal opdatere DAGENS NAVN og UGE nr.

Jeg søger altså hjælp til at få det grundlæggende dato navigation til at virke. Kan I hjælpe mig på vej.

Jeg logger ud fra eksperten.dk nu men kommer tilbage senere i aften hvis alt går vel.. 


<%
Session.LCID = 1030

dagiuge = DatePart("W", date, 2)-1  '2 angive føste dag er mandag
dato = DateAdd("d", -dagiuge, date) 'Find dato for mandag

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

'Find ugens dage navne + dato
dagMandag = WeekdayName(DatePart("W", dato, 1))
dagMandag = UCase(Left(dagMandag,1)) & Mid(dagMandag,2) & " [" & 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)& "]"
dato = DateAdd("d", 1, dato)
dagOnsdag = WeekdayName(DatePart("W", dato, 1))
dagOnsdag = UCase(Left(dagOnsdag,1)) & Mid(dagOnsdag,2) & " [" & 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)& "]"
dato = DateAdd("d", 1, dato)
dagFredag = WeekdayName(DatePart("W", dato, 1))
dagFredag = UCase(Left(dagFredag,1)) & Mid(dagFredag,2) & " [" & Day(dato) & "/" & Month(dato)& "]"
'uge + / - 1
ugeNrp= ugeNr + 1
ugeNrm= ugeNr - 1

%>
<form action="skema3.asp" method="post" name="skemaform">
<table border="0" width="100%" cellspacing="2" cellpadding="5">
  <tr>
    <td colspan="7" class="tbl_text_kal">Uge <%=ugeNr%> </td>
  </tr>
  <tr align="left" class="tbl_log">
    <td width="200">Navn</td>
    <td width="100" height="30"><%=dagMandag%></td>
    <td width="100" height="30"><%=dagTirsdag%></td>
    <td width="100" height="30"><%=dagOnsdag%></td>
    <td width="100" height="30"><%=dagTorsdag%></td>
    <td width="100" height="30"><%=dagFredag%></td>
    <td width="100" height="30">Opdater</td>
  </tr>
<%
'SQL kald
%> 
  <tr align="left" class="tbl_text_kal">
    <td width="200">rs("strNavn")</td>
    <td>timer i pågældende uge Mandag</td>
    <td>timer i pågældende uge Tirsdag</td>
    <td>timer i pågældende uge Onsdag</td>
    <td>timer i pågældende uge Tordag</td>
    <td>timer i pågældende uge Fredag</td>
    <td>knap</td>
  </tr>
  <tr align="left" class="tbl_text_kal">
    <%
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrm & "'>Forrige uge</a></td> ")
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrp & "'>Næste uge</a></td> ")
%>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>
</body>
</html>



<%
'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
%>
Avatar billede eagleeye Praktikant
10. januar 2004 - 23:56 #1
Første udgave.
Der er tilføjet en funktion som hedder findMandag og den bruges til at finde mandag i den valgte uge ud fra ugeNr og årstal. Ligenu er årstal Year(Date) så scriptet kan ikke springe imellem to år endnu (hvis du vil havde det?). For man kan bestemme en dato i en bestemt uge skal der nemlig både uge nummer og årstal til.


<%
Session.LCID = 1030

if request.QueryString("uge") = "" then
ugeNr = weekNr(dato)
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)& "]"
dato = DateAdd("d", 1, dato)
dagTirsdag = WeekdayName(DatePart("W", dato, 1))
dagTirsdag = UCase(Left(dagTirsdag,1)) & Mid(dagTirsdag,2) & " [" & 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)& "]"
dato = DateAdd("d", 1, dato)
dagTorsdag = WeekdayName(DatePart("W", dato, 1))
dagTorsdag = UCase(Left(dagTorsdag,1)) & Mid(dagTorsdag,2) & " [" & 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)& "]"
'uge + / - 1
ugeNrp= ugeNr + 1
ugeNrm= ugeNr - 1

%>
<form action="skema3.asp" method="post" name="skemaform">
<table border="0" width="100%" cellspacing="2" cellpadding="5">
  <tr>
    <td colspan="7" class="tbl_text_kal">Uge <%=ugeNr%> </td>
  </tr>
  <tr align="left" class="tbl_log">
    <td width="200">Navn</td>
    <td width="100" height="30"><%=dagMandag%></td>
    <td width="100" height="30"><%=dagTirsdag%></td>
    <td width="100" height="30"><%=dagOnsdag%></td>
    <td width="100" height="30"><%=dagTorsdag%></td>
    <td width="100" height="30"><%=dagFredag%></td>
    <td width="100" height="30">Opdater</td>
  </tr>
<%
'SQL kald
%> 
  <tr align="left" class="tbl_text_kal">
    <td width="200">rs("strNavn")</td>
    <td>timer i pågældende uge Mandag</td>
    <td>timer i pågældende uge Tirsdag</td>
    <td>timer i pågældende uge Onsdag</td>
    <td>timer i pågældende uge Tordag</td>
    <td>timer i pågældende uge Fredag</td>
    <td>knap</td>
  </tr>
  <tr align="left" class="tbl_text_kal">
    <%
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrm & "'>Forrige uge</a></td> ")
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrp & "'>Næste uge</a></td> ")
%>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>
</body>
</html>

<%
'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
%>
Avatar billede eagleeye Praktikant
10. januar 2004 - 23:57 #2
hmm den første if sætning skal lige rettes til dette:

if request.QueryString("uge") = "" then
ugeNr = weekNr(date)
Else
ugeNr = CInt(request.QueryString("uge"))
End if
Avatar billede wilweb Nybegynder
11. januar 2004 - 00:59 #3
Du kunne sikkert genkende noget af koden for det var fra dig i et andet spørgsmål her på exp.dk - Det er jo som det plejer. Det virker perfekt!

Men ville det være vanskeligt at lave det så scriptet kunnne springe imellem to år. Jeg har nok ikke helt fundet den råde tråd med Datoer, så alt hjælp er velkommen.

Du smider lige et svar ikk!
Avatar billede eagleeye Praktikant
11. januar 2004 - 01:37 #4
Nej det er ikke så svært at tilføje år. Det med at skifte år er tilføjet til det kode som er vist nedenfor.

Næste og Forrige links er lavet ved at finde næste uge+år og forrige uge+år ud fra den dato man viser ved dette:
'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)


Her er hele koden:


<%
Session.LCID = 1030

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


'Find første dag i den valgt uge
dato = findMandag(ugeNr,aar)

'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)

'Find ugens dage navne + dato
dagMandag = WeekdayName(DatePart("W", dato, 1))
dagMandag = UCase(Left(dagMandag,1)) & Mid(dagMandag,2) & " [" & 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)& "]"
dato = DateAdd("d", 1, dato)
dagOnsdag = WeekdayName(DatePart("W", dato, 1))
dagOnsdag = UCase(Left(dagOnsdag,1)) & Mid(dagOnsdag,2) & " [" & 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)& "]"
dato = DateAdd("d", 1, dato)
dagFredag = WeekdayName(DatePart("W", dato, 1))
dagFredag = UCase(Left(dagFredag,1)) & Mid(dagFredag,2) & " [" & Day(dato) & "/" & Month(dato)& "]"

%>
<form action="skema3.asp" method="post" name="skemaform">
<table border="0" width="100%" cellspacing="2" cellpadding="5">
  <tr>
    <td colspan="7" class="tbl_text_kal">Uge <%=ugeNr%> </td>
  </tr>
  <tr align="left" class="tbl_log">
    <td width="200">Navn</td>
    <td width="100" height="30"><%=dagMandag%></td>
    <td width="100" height="30"><%=dagTirsdag%></td>
    <td width="100" height="30"><%=dagOnsdag%></td>
    <td width="100" height="30"><%=dagTorsdag%></td>
    <td width="100" height="30"><%=dagFredag%></td>
    <td width="100" height="30">Opdater</td>
  </tr>
<%
'SQL kald
%> 
  <tr align="left" class="tbl_text_kal">
    <td width="200">rs("strNavn")</td>
    <td>timer i pågældende uge Mandag</td>
    <td>timer i pågældende uge Tirsdag</td>
    <td>timer i pågældende uge Onsdag</td>
    <td>timer i pågældende uge Tordag</td>
    <td>timer i pågældende uge Fredag</td>
    <td>knap</td>
  </tr>
  <tr align="left" class="tbl_text_kal">
    <%
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrm & "'>Forrige uge</a></td> ")
    Response.Write("<td><a href='skema3.asp?uge=" & ugeNrp & "'>Næste uge</a></td> ")
%>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>
</body>
</html>

<%
'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

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
%>
Avatar billede wilweb Nybegynder
11. januar 2004 - 01:53 #5
Cool og mange tak:>
Avatar billede sth Novice
08. maj 2007 - 12:39 #6
Hej

flot kode, jeg har selv haft brug for noget ligende.
Er der mon en der kan rette den så den viser ovenstående for de næste 4 uger?
Altså hvis denne uge er uge 19 så vises de næste 4 hele uger (20,21,22,23)
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