来自空数据的 SPLIT 错误

SPLIT Error From Null Data

我在从数据库中的一个字符用户字段拆分数据时遇到问题。我们在字段中输入的数据示例是:

abc-123-456; abc-789; 1234567; abcdefghi

我想在每次出现 ; 时拆分数据 我创建了 4 个公式并将它们放在报告中 header:

Split({STANDARD.CUSER6}, ";") [1]
Split({STANDARD.CUSER6}, ";") [2]
Split({STANDARD.CUSER6}, ";") [3]
Split({STANDARD.CUSER6}, ";") [4]

我也试过这样的公式:

if isnull({STANDARD.CUSER6}) then ""
else
split({STANDARD.CUSER6},";") [1]

当字符用户字段中有 4 "groups" 数据时,这很有效,但任何时候我收到 none 或少于 4 "groups" 数据

A subscript must be between 1 and the size of the array.

报告写作的新手,所以我不确定我是否应该使用拆分公式或其他东西。

感谢所有反馈!

您可以使用UBound函数获取最高数组索引:

公式应如下所示:

第 1 组

If UBound(Split({STANDARD.CUSER6}, ";")) > 0 Then
    Split({STANDARD.CUSER6}, ";")[1]
Else
    ""

第 2 组

If UBound(Split({STANDARD.CUSER6}, ";")) > 1 Then
    Split({STANDARD.CUSER6}, ";")[2]
Else
    ""

第 3 组

If UBound(Split({STANDARD.CUSER6}, ";")) > 2 Then
    Split({STANDARD.CUSER6}, ";")[3]
Else
    ""

第 4 组

If UBound(Split({STANDARD.CUSER6}, ";")) > 3 Then
    Split({STANDARD.CUSER6}, ";")[4]
Else
    ""

注意:(Crystal 报告中的数组索引从 1 开始而不是 0。)