Crystal reports 拆分:下标必须介于1和数组大小之间
我有一个超级简单的公式。问题是有时候数据没有第二个值,或者有时候值为空Crystal reports 拆分:下标必须介于1和数组大小之间,crystal-reports,Crystal Reports,我有一个超级简单的公式。问题是有时候数据没有第二个值,或者有时候值为空 Split ({PO_RECEIVE.VENDOR_LOT_ID}," ")[2] ID 111 222 123 123 222 我在想,如果我能想出一些逻辑来确定字符串是否有多个值,它会解决我的问题,但还没有找到我要找的: If {PO_RECEIVE.VENDOR_LOT_ID} = SingleOrBlankString then {PO_RECEIVE.VENDOR_LOT_ID} else Split ({
Split ({PO_RECEIVE.VENDOR_LOT_ID}," ")[2]
ID
111 222
123
123 222
我在想,如果我能想出一些逻辑来确定字符串是否有多个值,它会解决我的问题,但还没有找到我要找的:
If {PO_RECEIVE.VENDOR_LOT_ID} = SingleOrBlankString then
{PO_RECEIVE.VENDOR_LOT_ID} else
Split ({PO_RECEIVE.VENDOR_LOT_ID}," ")[2]
更好的示例数据:
3011111*42011111111
2711 00291111111
711111//12111111111
/J1111 69111111111
170111
如果字符串最多可以包含两个值,用
空格分隔,则可以使用InStr
函数检查字符串是否包含空格
:
If InStr({PO_RECEIVE.VENDOR_LOT_ID}, " ") > 0 Then
{PO_RECEIVE.VENDOR_LOT_ID}
Else
Split ({PO_RECEIVE.VENDOR_LOT_ID}," ")[2]
如果零件之间可以有多个空格,则可以使用以下公式获取值:
左侧部分:
此函数返回字符串的左侧部分,直到第一个空格
If InStr({PO_RECEIVE.VENDOR_LOT_ID}, " ") > 0 Then
Left({PO_RECEIVE.VENDOR_LOT_ID}, InStr({PO_RECEIVE.VENDOR_LOT_ID}, " "))
右侧部分:
此函数返回最后一个空格后字符串的右侧部分
- 函数返回最后一个空格的位置,因为它向后搜索字符串
Len
-函数返回字符串的长度
- [length]-[last space的位置]=[right part的长度]
数据中的数字后面必须有隐藏的空格。我将>0提高到10,一些值仍然没有被分割。我对公式的最后一次迭代是:如果isnull({PO_-RECEIVE.VENDOR_-LOT_-ID}),那么“else if{PO_-RECEIVE.VENDOR_-LOT_-ID}”””,那么“else Split({PO-RECEIVE.VENDOR_-LOT_-ID})”可以显示上面添加的{PO RECEIVE.VENDOR_-LOT_-ID}
-列的示例值吗,但是我包括了我在数据中看到的所有类型的变量。(任何带1的都可以是任何字符)请将示例数据添加到您的问题中,而不是添加到答案中。@Charles添加了一个解释
If InStr({PO_RECEIVE.VENDOR_LOT_ID}, " ") > 0 Then
Right({PO_RECEIVE.VENDOR_LOT_ID}, Len({PO_RECEIVE.VENDOR_LOT_ID}) - InStrRev(testString, " "))