0% found this document useful (0 votes)
95 views3 pages

IDAutomation Formula Code128Auto

This document contains instructions and code for generating Code 128 barcodes in Crystal Reports using IDAutomation barcode fonts. It explains that the fully functional Code 128 font from 12/2000 or later must be used. The code takes barcode data as a string, analyzes the characters, switches between encoding sets A, B and C as needed, calculates a check digit, and outputs the barcode in the Code 128 font format.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
95 views3 pages

IDAutomation Formula Code128Auto

This document contains instructions and code for generating Code 128 barcodes in Crystal Reports using IDAutomation barcode fonts. It explains that the fully functional Code 128 font from 12/2000 or later must be used. The code takes barcode data as a string, analyzes the characters, switches between encoding sets A, B and C as needed, calculates a check digit, and outputs the barcode in the Code 128 font format.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

'*********************************************************************

'* IDAutomation Barcode Font Formulas for Crystal Reports 4.01


'* Copyright, IDAutomation.com, Inc. 2000-2004. All rights reserved.
'*
'* You MUST use the fully functional Code 128 (dated 12/2000 or later)
'* font for this code to create and print a proper barcode
'*
'* To create UCC/EAN128 barcodes, use the appropriate
'* ASCII 0202 and AIs included as documented at:
'* http://www.idautomation.com/code128faq.html#EAN128andUCC128
'*
'* You may incorporate our Source Code in your application
'* only if you own a valid License from IDAutomation.com, Inc.
'* for the associated font and the copyright notices are not
'* removed from the source code.
'*
'* Formula: Code128 - formats output to IDAutomationC128 fonts
'* Tutorial: http://www.BizFonts.com/crystal/
'*********************************************************************
Dim DataToEncode As String
'Change the next line to connect to your data source; for example:
'DataToEncode = ({Table.Field})
DataToEncode = "�8100712345�2112345678"

Dim PrintableString As String


Dim DataToFormat As String
Dim WeightedTotal As Number
Dim CurrentValue As Number
Dim CheckDigitValue As Number
Dim C128CheckDigit As String
Dim StringLength As Number
Dim I As Number
Dim CurrentCharNum As Number
Dim CurrentEncoding As String
Dim C128Start As String
Dim CorrectFNC As Number
Dim CurrentChar As String
CorrectFNC = 0
PrintableString = ""
DataToFormat = DataToEncode
DataToEncode = ""
'Here we select character set A, B or C for the START character
StringLength = Len(DataToFormat)
CurrentCharNum = Asc(Mid(DataToFormat, 1, 1))
If CurrentCharNum < 32 Then C128Start = Chr(203)
If CurrentCharNum > 31 And CurrentCharNum < 127 Then C128Start = Chr(204)
If ((StringLength > 4) And IsNumeric(Mid(DataToFormat, 1, 4))) Then C128Start =
Chr(205)
'202 & 212-215 is for the FNC1, with this Start C is mandatory
If CurrentCharNum = 202 Then C128Start = Chr(205)
If CurrentCharNum = 212 Then C128Start = Chr(205)
If CurrentCharNum = 213 Then C128Start = Chr(205)
If CurrentCharNum = 214 Then C128Start = Chr(205)
If CurrentCharNum = 215 Then C128Start = Chr(205)
If C128Start = Chr(203) Then CurrentEncoding = "A"
If C128Start = Chr(204) Then CurrentEncoding = "B"
If C128Start = Chr(205) Then CurrentEncoding = "C"
For I = 1 To StringLength
'check for FNC1 in any set which is ASCII 202 and ASCII 212-215
CurrentCharNum = Asc(Mid(DataToFormat, I, 1))
If ((CurrentCharNum = 202) Or (CurrentCharNum = 212) Or (CurrentCharNum =
213) Or (CurrentCharNum = 214) Or (CurrentCharNum = 215)) Then
DataToEncode = DataToEncode & Chr(202)
'check for switching to character set C
ElseIf ((I < StringLength - 2) And (IsNumeric(Mid(DataToFormat, I, 1))) And
(IsNumeric(Mid(DataToFormat, I + 1, 1))) And (IsNumeric(Mid(DataToFormat, I, 4))))
Or ((I < StringLength) And (IsNumeric(Mid(DataToFormat, I, 1))) And
(IsNumeric(Mid(DataToFormat, I + 1, 1))) And (CurrentEncoding = "C")) Then
'switch to set C if not already in it
If CurrentEncoding <> "C" Then DataToEncode = DataToEncode & Chr(199)
CurrentEncoding = "C"
CurrentChar = Mid(DataToFormat, I, 2)
CurrentValue = Val(CurrentChar)
'set the CurrentValue to the number of String CurrentChar
If (CurrentValue < 95 And CurrentValue > 0) Then DataToEncode =
DataToEncode & Chr(CurrentValue + 32)
If CurrentValue > 94 Then DataToEncode = DataToEncode &
Chr(CurrentValue + 100)
If CurrentValue = 0 Then DataToEncode = DataToEncode & Chr(194)
I = I + 1
'check for switching to character set A
ElseIf (I <= StringLength) And ((Asc(Mid(DataToFormat, I, 1)) < 31) Or
((CurrentEncoding = "A") And (Asc(Mid(DataToFormat, I, 1)) > 32 And
(Asc(Mid(DataToFormat, I, 1))) < 96))) Then
'switch to set A if not already in it
If CurrentEncoding <> "A" Then DataToEncode = DataToEncode & Chr(201)
CurrentEncoding = "A"
'Get the ASCII value of the next character
CurrentCharNum = Asc(Mid(DataToFormat, I, 1))
If CurrentCharNum = 32 Then
DataToEncode = DataToEncode & Chr(194)
ElseIf CurrentCharNum < 32 Then
DataToEncode = DataToEncode & Chr(CurrentCharNum + 96)
ElseIf CurrentCharNum > 32 Then
DataToEncode = DataToEncode & Chr(CurrentCharNum)
End If
'check for switching to character set B
ElseIf (I <= StringLength) And (((Asc(Mid(DataToFormat, I, 1))) > 31) And
((Asc(Mid(DataToFormat, I, 1)))) < 127) Then
'switch to set B if not already in it
If CurrentEncoding <> "B" Then DataToEncode = DataToEncode & Chr(200)
CurrentEncoding = "B"
'Get the ASCII value of the next character
CurrentCharNum = Asc(Mid(DataToFormat, I, 1))
If CurrentCharNum = 32 Then
DataToEncode = DataToEncode & Chr(194)
Else
DataToEncode = DataToEncode & Chr(CurrentCharNum)
End If
End If
Next I

'<<<< Calculate Modulo 103 Check Digit >>>>


WeightedTotal = Asc(C128Start) - 100
StringLength = Len(DataToEncode)
For I = 1 To StringLength
CurrentCharNum = Asc(Mid(DataToEncode, I, 1))
If CurrentCharNum < 135 Then CurrentValue = CurrentCharNum - 32
If CurrentCharNum > 134 Then CurrentValue = CurrentCharNum - 100
If CurrentCharNum = 194 Then CurrentValue = 0
CurrentValue = CurrentValue * I
WeightedTotal = WeightedTotal + CurrentValue
If CurrentCharNum = 32 Then CurrentCharNum = 194
PrintableString = PrintableString & Chr(CurrentCharNum)
Next I
CheckDigitValue = (WeightedTotal Mod 103)
If CheckDigitValue < 95 And CheckDigitValue > 0 Then C128CheckDigit =
Chr(CheckDigitValue + 32)
If CheckDigitValue > 94 Then C128CheckDigit = Chr(CheckDigitValue + 100)
If CheckDigitValue = 0 Then C128CheckDigit = Chr(194)
DataToEncode = ""
Formula = C128Start & PrintableString & C128CheckDigit & Chr(206) & " "

You might also like