Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

CR10 - Check Digit with Weight Using 7,5,3,2

Posted on 2013-02-07
3
Medium Priority
?
579 Views
Last Modified: 2013-02-08
Hello:

I need help with the formula attached - I need to change it from Calculating "Double Every Second Digit" to using the 7,5,3,2 Check Digit Weight, repetition starting from the first number on the left of the scan line.  

Any ideas would be great.  I'm at a loss on how to do this at this point.  

Thank you!

** Attached Document Contains Example from Bank and the original formula.
Check-Digit-Weights.docx
0
Comment
Question by:eleale
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 77

Expert Comment

by:peter57r
ID: 38866471
Are all the numbers the same length? (19 digits in the example)

WHere does the answer 214 come from?  The sum of the products is 206.

Can you confirm that the field containing the number is being seen by Crystal as a text field.
0
 
LVL 101

Accepted Solution

by:
mlmcc earned 2000 total points
ID: 38866874
Actually the sum of the products is 216  (127 + 45 = 172 not 162)
Here is the code to get the check digit for the give string

Local StringVar ScanNumber := '544969302100002500';
Local NumberVar Array Multipliers := [7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2];
Local NumberVar CheckDigitTotal;
Local NumberVar Index;
Local NumberVar ConstantValue := 8;

CheckDigitTotal := 0;

For Index := 1 to Length(ScanNumber) do
   CheckDigitTotal := CheckDigitTotal + Val(ScanNumber[Index]) * Multipliers[index];

CheckDigitTotal := CheckDigitTotal + ConstantValue;
CheckDigitTotal MOD 10

Open in new window



For a string from the database use
Local StringVar ScanNumber;
Local NumberVar Array Multipliers := [7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2,7,5,3,2];
Local NumberVar CheckDigitTotal;
Local NumberVar Index;
Local NumberVar ConstantValue := 8;

ScanNumber := {Yourfield};
CheckDigitTotal := 0;

For Index := 1 to Length(ScanNumber) do
   CheckDigitTotal := CheckDigitTotal + Val(ScanNumber[Index]) * Multipliers[index];

CheckDigitTotal := CheckDigitTotal + ConstantValue;
CheckDigitTotal MOD 10

Open in new window


The code will handle a 32-digit numeric string.  If you need more just exted the Multiplier array with more 7532's

You can change the constant as desired or even set it to a database field or parameter


mlmcc
0
 

Author Closing Comment

by:eleale
ID: 38868322
Thank you!!!  This worked perfectly.  

Awesome!
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I hate sub reports and always consider them the last resort in any reporting solution.  The negative effect on performance and maintainability is just not worth the easy ride they give the report writer.  Nine times out of ten reporting requirements…
There have always been a lot of questions related to when Crystal Reports evaluates report components (such as formulas, summaries, cross-tabs, charts, to name a few examples). Crystal Reports uses a two-pass reporting process to provide greater …
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Suggested Courses

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question