SSCC条形码-Crystal Reports中的校验位功能

时间:2020-07-15 15:42:43

标签: crystal-reports

我有一个公式,我相信它可以正确计算SSCC条形码标签的Modulus 10校验位,但是我在努力寻找的语法中有错误。

我的代码:

private numbervar intCount; 
private stringvar Prefix; 
private stringvar serial;
private stringvar barcode;
private numbervar array N[17]; 
private numbervar intTotal;
private numbervar CheckDigit;

intCount := 10;
Prefix := "00123456"; //test string
Serial := right({rpt_PalletPacklist;1.PalletID}, 6); //test string
barcode := prefix & Serial; //test string

N [1] := toNumber(mid(barcode, 0, 1))*3;
N [2] := toNumber(mid(barcode, 1, 1))*1;
N [3] := toNumber(mid(barcode, 2, 1))*3;
N [4] := toNumber(mid(barcode, 3, 1))*1;
N [5] := toNumber(mid(barcode, 4, 1))*3;
N [6] := toNumber(mid(barcode, 5, 1))*1;
N [7] := toNumber(mid(barcode, 6, 1))*3;
N [8] := toNumber(mid(barcode, 7, 1))*1;
N [9] := toNumber(mid(barcode, 8, 1))*3;
N [10] := toNumber(mid(barcode, 9, 1))*1;
N [11] := toNumber(mid(barcode, 10, 1))*3;
N [12] := toNumber(mid(barcode, 11, 1))*1;
N [13] := toNumber(mid(barcode, 12, 1))*3;
N [14] := toNumber(mid(barcode, 13, 1))*1;
N [15] := toNumber(mid(barcode, 14, 1))*3;
N [16] := toNumber(mid(barcode, 15, 1))*1;
N [17] := toNumber(mid(barcode, 16, 1))*3;

intTotal :=     N[1]+N[2]+N[3]+N[4]+N[5]+N[6]+N[7]+N[8]+N[9]+N[10]+N[11]+N[12]+N[13]+N[14]+N[15]+N[16]+N[17]

do intCount = intCount + 10
while intTotal > intCount

CheckDigit = intCount - intTotal

return CheckDigit

1 个答案:

答案 0 :(得分:1)

在Crystal语法中,您缺少一些“;”并使用无效的“私人”和“返回”条款。

此外,我了解到您应该在“待办事项”中使用“:=”而不是“ =“。

尝试一下:

 numbervar intCount; 
 stringvar Prefix; 
 stringvar serial;
 stringvar barcode;
 numbervar array N[17]; 
 numbervar intTotal;
 numbervar CheckDigit;

intCount := 10;
Prefix := "00123456"; //test string
Serial := right({rpt_PalletPacklist;1.PalletID}, 6); //test string
barcode := prefix & Serial; //test string

N [1] := toNumber(mid(barcode, 0, 1))*3;
N [2] := toNumber(mid(barcode, 1, 1))*1;
N [3] := toNumber(mid(barcode, 2, 1))*3;
N [4] := toNumber(mid(barcode, 3, 1))*1;
N [5] := toNumber(mid(barcode, 4, 1))*3;
N [6] := toNumber(mid(barcode, 5, 1))*1;
N [7] := toNumber(mid(barcode, 6, 1))*3;
N [8] := toNumber(mid(barcode, 7, 1))*1;
N [9] := toNumber(mid(barcode, 8, 1))*3;
N [10] := toNumber(mid(barcode, 9, 1))*1;
N [11] := toNumber(mid(barcode, 10, 1))*3;
N [12] := toNumber(mid(barcode, 11, 1))*1;
N [13] := toNumber(mid(barcode, 12, 1))*3;
N [14] := toNumber(mid(barcode, 13, 1))*1;
N [15] := toNumber(mid(barcode, 14, 1))*3;
N [16] := toNumber(mid(barcode, 15, 1))*1;
N [17] := toNumber(mid(barcode, 16, 1))*3;

intTotal :=     N[1]+N[2]+N[3]+N[4]+N[5]+N[6]+N[7]+N[8]+N[9]+N[10]+N[11]+N[12]+N[13]+N[14]+N[15]+N[16]+N[17];

do intCount := intCount + 10
while intTotal > intCount;

CheckDigit = intCount - intTotal;

CheckDigit //this returns!
相关问题