Ошибка SPLIT из нулевых данных - PullRequest
0 голосов
/ 14 мая 2018

У меня проблемы с разделением данных из одного из наших полей пользовательских символов в нашей базе данных.Пример данных, которые мы вводим в поле:

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 и размером массива.

Новое в написании отчетов, поэтому я не уверен, стоит ли мне использовать формулу разделения или что-то еще.

Все отзывы приветствуются!

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете использовать функцию 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
    ""

Примечание: (индексы массива начинаются с 1 вместо 0 в Crystal Reports.)

...