Crystal Reports:如何提取数据库字段中连字符前的数字?
在Crystal Reports中提取PO编号连字符前的部分
首先要明确:你的{PO_TEMP_PO_HEADER.PO_Number}是数字字段,直接用字符串截取函数会报错——因为数字类型不支持字符串操作,得先转成字符串类型才能处理。
给你两个可用的公式,按需选择:
公式1:假设所有PO编号都带连字符
如果确定所有数据都包含-,直接用下面的公式:
Left(CStr({PO_TEMP_PO_HEADER.PO_Number}), InStr(CStr({PO_TEMP_PO_HEADER.PO_Number}), "-") - 1)
CStr():把数字字段转成字符串,让后续的字符串函数能正常工作InStr():定位连字符-在字符串中的位置Left():从字符串开头截取到连字符前一位的内容
公式2:兼容无连字符的情况
如果存在没有连字符的PO编号(避免因索引为0导致报错),用带判断的公式:
Local StringVar poStr := CStr({PO_TEMP_PO_HEADER.PO_Number}); Local NumberVar dashPos := InStr(poStr, "-"); If dashPos > 0 Then Left(poStr, dashPos - 1) Else poStr // 没有连字符时直接返回原内容
常见报错原因
你之前试的公式报错,大概率是没把数字字段转成字符串就直接用Left/InStr这类函数——Crystal Reports会拒绝对数字类型执行字符串操作,必须先转成字符串才能处理。
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

