如何为Crystal Report考勤条码添加起止符?IDAutomationHC39M是否适用?
解决条码无法识别的问题
1. 在代码中添加Code 39条码的起止符
Code 39编码标准要求条码内容必须以*作为起止标记,你只需在传递参数时给txtOrder.Text前后拼接*即可,修改后的代码如下:
private void btnbarcode_Click(object sender, EventArgs e) { RPT.barcode myreport = new RPT.barcode(); // 为发票ID添加*起止符 string barcodeValue = $"*{txtOrder.Text}*"; myreport.SetParameterValue("@INVOICE_ID", barcodeValue); myreport.SetDatabaseLogon("admin", "1234"); RPT.RPT_TESTS myform = new RPT.RPT_TESTS(); myform.crystalReportViewer1.ReportSource = myreport; myform.ShowDialog(); }
注意:确保Crystal Report报表中绑定该参数的文本框,已设置字体为IDAutomationHC39M,这样*会被渲染为Code 39标准的起止条码图案,而非普通文字星号。
2. 关于IDAutomationHC39M字体的正确性
IDAutomationHC39M是符合Code 39编码规范的专用条码字体,完全适配你的需求。需要额外确认两点:
- 报表中显示条码的文本框必须明确设置字体为IDAutomationHC39M,不能使用普通字体替代
- 运行报表的电脑上已正确安装该字体,否则系统会自动 fallback 到普通字体,导致条码无法被扫描器识别
内容的提问来源于stack exchange,提问作者Ziad Adnan
相关产品推荐
相关产品推荐

