all groups > inetserver asp general > december 2006 >
You're in the

inetserver asp general

group:

Problem with loop


Re: Problem with loop Bob Barrows [MVP]
12/29/2006 12:19:35 PM
inetserver asp general:
[quoted text, click to view]

Show us:
1. what the inputs look like
2. what the output is supposed to look like
3. what the output you are actually getting looks like

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

Re: Problem with loop Bob Barrows [MVP]
12/29/2006 12:59:47 PM
[quoted text, click to view]

Again, please show us the inputs from say, the first three records, show us
what the desired output is supposed to look like from those three pieces of
data, and what you are actually getting. Looking at this, combined with your
above description, will help us analyze your code and figure out the
problem. A picture is worth a thousand words.


--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

Re: Problem with loop Bob Barrows [MVP]
12/29/2006 2:59:07 PM
[quoted text, click to view]

OK, I'm back. I will play with this and get back to you.

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"

Re: Problem with loop Bob Barrows [MVP]
12/29/2006 3:31:54 PM
[quoted text, click to view]

OK, I could not use a recordset of course, so I put your inputs into an =
array and ran your code to get your results. I then did this to help you =
see what was going on:
<%
Dim kontrollnummer
Dim raknare
Dim Summa
Dim referens
dim ar, i
Dim faktor
ar=3Darray("3295","4296","6297")
for i =3D 0 to 2
referens =3D ar(i)
faktor =3D 7
Response.Write "<hr><b>" & referens & "</b><br>"
Response.Write "<TABLE><tr><th>raknare</th><th>factor" & _
"</th><th>Summa (pre)</th><th>Summa (post)</th></tr>"
For raknare =3D Len(referens) To 1 Step -1
Response.Write "<tr><td>" & raknare & "</td>"
Response.Write "<td>" & faktor & "</td>"
Response.Write "<td>" & Summa & "</td>"
Summa =3D Summa + Mid(referens, raknare, 1) * faktor
Response.Write "<td>" & Summa & "</td></tr>"
=20
If faktor =3D 7 Then
faktor =3D 3
ElseIf faktor =3D 3 Then
faktor =3D 1
ElseIf faktor =3D 1 Then
faktor =3D 7
End If
Next
Response.Write "</table>"
kontrollnummer =3D Right((10 - (Summa Mod 10)), 1)
Response.Write kontrollnummer & "<BR>"
next

%>
Running this code yields this result:

-------------------------------------------------------------------------=
-------

3295

raknare factor Summa (pre) Summa (post)=20
4 7 35=20
3 3 35 62=20
2 1 62 64=20
1 7 64 85=20

5


-------------------------------------------------------------------------=
-------

4296

raknare factor Summa (pre) Summa (post)=20
4 7 85 127=20
3 3 127 154=20
2 1 154 156=20
1 7 156 184=20

6


-------------------------------------------------------------------------=
-------

6297

raknare factor Summa (pre) Summa (post)=20
4 7 184 233=20
3 3 233 260=20
2 1 260 262=20
1 7 262 304=20

6

As you should see from this, the problem is the failure to initialize =
Summa before each loop. Adding "Summa =3D 0" to the code, right below =
the "faktor=3D7" line yields the correct results:

-------------------------------------------------------------------------=
-------
3295
raknare factor Summa (pre) Summa (post)=20
4 7 0 35=20
3 3 35 62=20
2 1 62 64=20
1 7 64 85=20
5

-------------------------------------------------------------------------=
-------
4296
raknare factor Summa (pre) Summa (post)=20
4 7 0 42=20
3 3 42 69=20
2 1 69 71=20
1 7 71 99=20
1

-------------------------------------------------------------------------=
-------
6297
raknare factor Summa (pre) Summa (post)=20
4 7 0 49=20
3 3 49 76=20
2 1 76 78=20
1 7 78 120=20
0




--=20
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
Problem with loop Kim
12/29/2006 4:54:49 PM
Hi, why doesn't this work inside a loop, gives me the wrong "kontrollnummer"
(increases it as the loop goes on)

<%
Dim kontrollnummer
Dim raknare
Dim Summa
Dim referens
referens = (rs_faktura.Fields.Item("customer_ID").Value) &
(rs_faktura.Fields.Item("bill_ID").Value)

Dim faktor
faktor = 7

For raknare = Len(referens) To 1 Step -1
Summa = Summa + Mid(referens, raknare, 1) * faktor
If faktor = 7 Then
faktor = 3
ElseIf faktor = 3 Then
faktor = 1
ElseIf faktor = 1 Then
faktor = 7
End If
Next

kontrollnummer = Right((10 - (Summa Mod 10)), 1)
%>
<%=kontrollnummer%>

Re: Problem with loop Kim
12/29/2006 7:48:47 PM
[quoted text, click to view]

Input looks like forinstance 42146 (customer id 42 & bill id 146). Based on
this I need a check digit to the end at this 42146 that is calculated like:

the digits to be verified are multiplied by the weights 7, 3, 1, 7, 3,1 .
from the right to left. The multiplied sums are added up and the sum is
subtracted from then nearest figure ending in zero. The resulting difference
is the check digit which is entered as the last digit in the reference
number. If the difference is 10, the check digit is 0.

This is calculated properly by the code in my initial post if done once. But
when I put this into a loop only the first time are calculated properly,
thereafter the check digits turns out wrong.

Re: Problem with loop Kim
12/29/2006 8:19:49 PM
[quoted text, click to view]

First record:
input = 3295
output= 32955 (ok)

second record:
input= 4296
output= 42966 (false, should be 42961)

third record:
input= 6297
output= 62976 (false, should be 62970)

Re: Problem with loop Kim
12/29/2006 10:47:22 PM
Oh man, that was an impressive answer. Not only did it work perfectly, it
also helped me understand the problem. Thank you so much, Bob.

AddThis Social Bookmark Button