473,320 Members | 1,861 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

Problem with loop

Kim
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%>
Dec 29 '06 #1
7 1430
Kim wrote:
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%>
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"
Dec 29 '06 #2
Kim
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
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.
Dec 29 '06 #3
Kim wrote:
>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

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.
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"
Dec 29 '06 #4
Kim
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)
Dec 29 '06 #5
Kim wrote:
>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'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"
Dec 29 '06 #6
Kim wrote:
>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"
Dec 29 '06 #7
Kim
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.
Dec 29 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Xiaozhu | last post by:
I trid to use icc -axW to optimize the code, but it becomes much slower... 8sec/37sec before and after using this option. my cpu is Intel(R) Pentium(R) 4 CPU 2.40GHz the test code is just one...
5
by: Carmine Cairo | last post by:
Hi, I'm working on a project and today I've note a little problem during the compile fase. Here a little piece of code: // 1st version welldone = 0; size = p->getSize(); backbone = new...
8
by: Jeff | last post by:
Hello everybody, I was doing one of the exercises in the K&R book, and I got something really strange. Here's the source code: /* * Exercise 2-2 from the K&R book, page 42 */ #include...
47
by: fb | last post by:
Hi Everyone. Thanks for the help with the qudratic equation problem...I didn't think about actually doing the math...whoops. Anyway... I'm having some trouble getting the following program to...
1
by: Promextheus Xex | last post by:
First php post... Hi there, I'm writing some code for my website to list people listening to my music. I have a loop for an array that dosen't seem to display all people. most of the time it...
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.