Crystal Reports 2013:条码可用的唯一序列号公式转二维码异常求助
Crystal Reports 2013 序列号QR码格式问题解决
问题核心
旧序列号公式生成的数值在转QR码时出现千分位逗号和.00后缀,且尝试用StringVar处理时报表返回空白(因公式未返回变量值)。
原公式回顾
- 序列号生成公式(@Serial Number):
(-(DateDiff ("s",currentdatetime,Date (2010,02,01)))/1)+{Report.ReportIDKey} - 原格式化公式:
right("000000" + totext({@Serial Number}, 0,""), 8)
解决方案
1. 修复空白页问题
你之前的StringVar公式仅完成变量赋值,但未返回变量内容,导致报表空白。修正公式需在最后返回变量:
StringVar text := Totext({@Serial Number}, 0, ""); text; // 必须添加此行返回变量值
2. 彻底消除千分位逗号与小数后缀
由于@Serial Number的计算结果可能是浮点数(因包含除法操作/1),需先转为整数再格式化,确保输出纯数字字符串:
// 格式化公式(保留8位补0逻辑) StringVar serialText := Totext(CInt({@Serial Number}), 0, ""); right("00000000" + serialText, 8);
或使用更简洁的CStr函数:
right("00000000" + CStr(CInt({@Serial Number}), "#"), 8);
3. 验证步骤
- 先在报表中单独插入
@Serial Number字段,确认每条记录均有有效数值(无Null) - 插入修改后的格式化公式,检查输出是否为无逗号、无小数的纯数字字符串
- 将该公式绑定到QR码控件,扫描测试结果
内容的提问来源于stack exchange,提问作者SysAdminKMC
相关产品推荐
相关产品推荐

