【发布时间】:2022-01-28 22:07:00
【问题描述】:
我在水晶报表中添加了一个公式来显示字段的值。但它在 cardno 变量中向我显示错误“字符串是非数字的”。以下是我的公式代码:
StringVar cardno;
NumberVar current_len;
NumberVar card_len;
NumberVar start;
NumberVar last;
StringVar ca;
card_len := ToNumber (Mid ({@lens},1,2));
start := ToNumber (Mid ({@lens},3,2));
last := ToNumber (Mid ({@lens},5,2));
current_len := Length (Trim (ToText({CA.CA}, 0 ,'')));
ca := ReplicateString("0",card_len-current_len) + Totext({CA.CA},0,'');
If card_len > current_len Then
If start = 0 Then
If last <= 1 Then
cardno := Mid(ca, last, card_len)
Else
cardno := ReplicateString("X",last-start-1) + Mid(ca, last, card_len)
Else
cardno := Mid (ca,1,start) + ReplicateString("X",last-start-1) + Mid(ca, last, card_len);
请提供解决方案以避免此错误。提前致谢。
【问题讨论】:
-
你能发布一个数字的例子和所需的掩码吗?
-
我需要像“cardno=XXXXXX1234”这样的cardno。
-
字符串的长度是否恒定?或者有效长度是多少?
-
另外,@len 公式基于什么?公式是否可能为空或不以至少 6 个数字字符开头?我只看到了您从 ToNumber() 函数调用中得到的错误。
-
那么,您想屏蔽除数字字符串表示的最后 4 位以外的所有数字(可能是信用卡号)?我的回答就是这样。
标签: crystal-reports