我遇到了从数据库中的某个字符用户字段中分割数据的问题。我们在该领域输入的数据示例如下:
abc-123-456; abc-789; 1234567; abcdefghi
我希望每次有数据时拆分数据; 我创建了4个公式并将它们放在报告标题中:
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个“组”数据时,这很有效,但是每当我收到的数据都没有或少于4个“<组”时
下标必须介于1和数组大小之间。
报告撰写的新内容,所以我不确定是否应该使用拆分公式或其他内容。
感谢所有反馈!
答案 0 :(得分:0)
您可以使用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 Reports中,数组索引从1开始而不是0。)