28. juli 2004 - 11:50
Der er
4 kommentarer og
2 løsninger
Loop med betinget addition til variabel
Jeg vil gerne fortsætte et loop, indtil en variabel (t) når en bestemt størrelse. Der skal dog kun adderes til variablen under bestemte betingelser (ikke-weekend). Hvad er forkert i følgende kode?
t = 0
n = 0
Do Until t = days
received = DateSerial(yyyy,mm,dd+n)
If weekday(DateSerial(yyyy,mm,dd+n),2) = 6 or 7 then
t = t
else
t = t+1
end if
n = n+1
Loop
Se evt. også
http://www.eksperten.dk/spm/523940 for en beskrivelse af projektet. På forhånd mange tak.
ok nu har jeg den vist:
If weekday(DateSerial(yyyy,mm,dd+n),2) = 6 or 7 then
erstattes med
If weekday(received, 2) = 6 or weekday(received, 2) = 7 then
(DateSerial(yyyy,mm,dd+n) er jo allerede sat ind i variablen received)
Tak Idanielsen.
weekday(received, 2) = 6 or = 7
skulle lige præcis, som du siger, erstattes med
weekday(received, 2) = 6 or weekday(received, 2) = 7
Nu virker den del af det, og nu vil jeg sætte et array op med helligdage. Jeg håber ikke, at jeg også får brug for hjælp til dette. Mange tak for hjælpen.
Hej hiks,
Det har jeg taget højde for. Min endelig kode kom til at se ud som følger:
<html>
<head>
<title>Calculation of deadline</title>
<head>
<body>
<form action="deadline.asp" method="post">
<table>
<tr>
<td>Boxes:</td>
<td><input type="number" name="boxes"></td>
</tr>
<tr>
<td><br>Year:</td>
<td><input type="number" name="year"></td>
</tr>
<tr>
<td>Month:</td>
<td><input type="number" name="month"></td>
</tr>
<tr>
<td>Day:</td>
<td><input type="number" name="day"></td>
</tr>
<tr>
<td colspan=2><input type="submit" value="Calculate deadline"></td>
</tr>
</table>
</form>
<%
boxes=Request.Form("boxes")
yyyy=Request.Form("year")
mm=Request.Form("month")
dd=Request.Form("day")
if boxes > 100 then
days = 20
else
days = 10
end if
y1 = yyyy
y2 = y1+1
a1 = y1 mod 19
b1 = int(y1/100)
c1 = y1 mod 100
d1 = int(b1/4)
e1 = b1 mod 4
f1 = int((b1+8)/25)
g1 = int((b1-f1+1)/3)
h1 = (19*a1+b1-d1-g1+15) mod 30
i1 = int(c1/4)
j1 = c1 mod 4
k1 = (32+2*e1+2*i1-h1-j1) mod 7
l1 = int((a1+11*h1+22*k1)/451)
m1 = int((h1+k1-7*l1+114)/31)
n1 = (h1+k1-7*l1+114) mod 31
py1 = c1
pm1 = m1
pd1 = n1+1
a2 = y2 mod 19
b2 = int(y2/100)
c2 = y2 mod 100
d2 = int(b2/4)
e2 = b2 mod 4
f2 = int((b2+8)/25)
g2 = int((b2-f2+1)/3)
h2 = (19*a1+b1-d1-g1+15) mod 30
i2 = int(c2/4)
j2 = c2 mod 4
k2 = (32+2*e2+2*i2-h2-j2) mod 7
l2 = int((a2+11*h2+22*k2)/451)
m2 = int((h2+k2-7*l2+114)/31)
n2 = (h2+k2-7*l2+114) mod 31
py2 = c2
pm2 = m2
pd2 = n2+1
Paaskedag1 = DateSerial(py1,pm1,pd1)
Nytaarsdag1 = DateSerial(y1,1,1)
Skaertorsdag1 = DateSerial(py1,pm1,pd1-3)
Langfredag1 = DateSerial(py1,pm1,pd1-2)
secPaaskedag1 = DateSerial(py1,pm1,pd1+1)
Bededag1 = DateSerial(py1,pm1,pd1+3*7+5)
Himmelfart1 = DateSerial(py1,pm1,pd1+5*7+4)
secPinsedag1 = DateSerial(py1,pm1,pd1+7*7+1)
Juledag1 = DateSerial(y1,12,24+1)
secJuledag1 = DateSerial(y1,12,24+2)
Paaskedag2 = DateSerial(py2,pm2,pd2)
Nytaarsdag2 = DateSerial(y2,1,1)
Skaertorsdag2 = DateSerial(py2,pm2,pd2-3)
Langfredag2 = DateSerial(py2,pm2,pd2-2)
secPaaskedag2 = DateSerial(py2,pm2,pd2+1)
Bededag2 = DateSerial(py2,pm2,pd2+3*7+5)
Himmelfart2 = DateSerial(py2,pm2,pd2+5*7+4)
secPinsedag2 = DateSerial(py2,pm2,pd2+7*7+1)
Juledag2 = DateSerial(y2,12,24+1)
secJuledag2 = DateSerial(y2,12,24+2)
t = 0
n = 0
Do Until t = days
dato = DateSerial(yyyy,mm,dd+n)
If weekday(dato,2) = 6 or weekday(dato,2) = 7 or dato = Paaskedag1 or dato = Nytaarsdag1 or dato =
Skaertorsdag1 or dato = Langfredag1 or dato = secPaaskedag1 or dato = Bededag1 or dato = Himmelfart1 or
dato = secPinsedag1 or dato = Juledag1 or dato = secJuledag1 or dato = Paaskedag2 or dato = Nytaarsdag2
or dato = Skaertorsdag2 or dato = Langfredag2 or dato = secPaaskedag2 or dato = Bededag2 or dato =
Himmelfart2 or dato = secPinsedag2 or dato = Juledag2 or dato = secJuledag2 then
t = t
else
t = t+1
end if
n = n+1
Loop
Response.Write "Deadline:" & dato
%>
</body>
</html>