Barcode Checksum HesaplamaFunction GetManifestBarcode(vInvoiceNo As Variant, iPageNo As Integer) As String Dim nSum As Integer Dim nCheck As Integer Dim i As Integer Dim s As String Dim n As Integer Dim ch As String GetManifestBarcode = "" 'no barcode If IsNull(vInvoiceNo) Then Exit Function End If 'bad length If Len(vInvoiceNo) <> 12 Then Exit Function End If If gstrTemplateId <> gstrTEMPLATEID_SERVICEPART Then 'not a service part - no check digit - as was before GetManifestBarcode = "*" & Left(vInvoiceNo, 8) & Mid(vInvoiceNo, 10, 2) & Format(iPageNo, "00") & "*" Else 'service part 'calculate check digit s = UCase$(Left$(vInvoiceNo, 8)) 'uppercase, first 8 characters only For i = 1 To 8 n = 0 'reset, if no match found ch = Mid$(s, i, 1) Select Case ch Case "0" To "9" n = CInt(ch) Case "A" To "Z" n = Asc(ch) - 55 Case "-": n = 36 Case ".": n = 37 Case " ": n = 38 Case "$": n = 39 Case "/": n = 40 Case "+": n = 41 Case "%": n = 42 End Select nSum = nSum + n Next i nCheck = nSum Mod 43 'check sum 'now convert check sum back to character ch = "" Select Case nCheck Case 0 To 9 ch = Chr$(48 + nCheck) Case 10 To 35 ch = Chr$(55 + nCheck) Case 36: ch = "-" Case 37: ch = "." Case 38: ch = "_" Case 39: ch = "$" Case 40: ch = "/" Case 41: ch = "+" Case 42: ch = "%" End Select GetManifestBarcode = "*" & s & ch & "*" End If End Function |