Kim wrote:
Quote:
Quote:
>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.
| 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)
|
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=array("3295","4296","6297")
for i = 0 to 2
referens = ar(i)
faktor = 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 = Len(referens) To 1 Step -1
Response.Write "<tr><td>" & raknare & "</td>"
Response.Write "<td>" & faktor & "</td>"
Response.Write "<td>" & Summa & "</td>"
Summa = Summa + Mid(referens, raknare, 1) * faktor
Response.Write "<td>" & Summa & "</td></tr>"
If faktor = 7 Then
faktor = 3
ElseIf faktor = 3 Then
faktor = 1
ElseIf faktor = 1 Then
faktor = 7
End If
Next
Response.Write "</table>"
kontrollnummer = Right((10 - (Summa Mod 10)), 1)
Response.Write kontrollnummer & "<BR>"
next
%>
Running this code yields this result:
--------------------------------------------------------------------------------
3295
raknare factor Summa (pre) Summa (post)
4 7 35
3 3 35 62
2 1 62 64
1 7 64 85
5
--------------------------------------------------------------------------------
4296
raknare factor Summa (pre) Summa (post)
4 7 85 127
3 3 127 154
2 1 154 156
1 7 156 184
6
--------------------------------------------------------------------------------
6297
raknare factor Summa (pre) Summa (post)
4 7 184 233
3 3 233 260
2 1 260 262
1 7 262 304
6
As you should see from this, the problem is the failure to initialize Summa before each loop. Adding "Summa = 0" to the code, right below the "faktor=7" line yields the correct results:
--------------------------------------------------------------------------------
3295
raknare factor Summa (pre) Summa (post)
4 7 0 35
3 3 35 62
2 1 62 64
1 7 64 85
5
--------------------------------------------------------------------------------
4296
raknare factor Summa (pre) Summa (post)
4 7 0 42
3 3 42 69
2 1 69 71
1 7 71 99
1
--------------------------------------------------------------------------------
6297
raknare factor Summa (pre) Summa (post)
4 7 0 49
3 3 49 76
2 1 76 78
1 7 78 120
0
--
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"