Причина ошибки, вероятно, заключается в том, что проверка на нулевое значение происходит после split
.
Я обычно стараюсь избегать использования массивов / переменных в Crystal Reports. Главным образом потому, что вы не можете группировать или использовать агрегатные функции в формулах, которые содержат переменные.
Итак, вот решение, которое работает со строковыми функциями:
Первый вход
If InStr({table.field}, chr(13)) > 0 Then
Left({table.field}, InStr({table.field}, chr(13)))
Else
{table.field}
Последняя запись
If InStrRev({table.field}, chr(13)) > 0 Then
Right({table.field}, Len({table.field}) - InStrRev({table.field}, chr(13)))
Else
{table.field}
EDIT
Чтобы получить вторую строку, вы должны выполнить InStr
/ InStrRev
два раза:
Первый вход
If InStr(InStr({@table.field}, chr(13))+1,{@table.field}, chr(13)) > 0 Then
Left({@table.field}, InStr(InStr({@table.field}, chr(13))+1, {@table.field}, chr(13)))
Else
{@table.field}
Последний вход
If InStrRev({@table.field}, chr(13), InStrRev({@table.field}, chr(13))+1) > 0 Then
Right({@table.field}, Len({@table.field}) - InStrRev({@table.field}, chr(13),InStrRev({@table.field}, chr(13))-1))
Else
{@table.field}