баг Substring, Iif, Switch (или "фишка"?)

отредактировано 08:20 Раздел: FastReport .NET
FastReport.Net v1.7.1

есть данные: (строка) MasterData.Name = "1234567890"
"Name" имеет неизвестное кол. знаков или может быть null

1.
Делаю формулу:
[Substring([MasterData.Name],0,12)]

Memo269: Error in expression: Substring([MasterData.Name],0,12)
System.Exception: Memo269: Error in expression: Substring([MasterData.Name],0,12) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length

Ожидаемый результат: "1234567890"

2.
[Substring([MasterData.Name],12)]

System.Exception: Memo269: Error in expression: Substring([MasterData.name],13) ---> System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex

Ожидаемый результат: ""

3. ОКЕЙ, делаю:

[IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name])]

System.Exception: Memo269: Error in expression: IIf(Length([MasterData.name])>12,Substring([MasterData.name],0,12),[MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length

Ожидаемый результат: "1234567890"
Ну НЕ ДОЛЖЕН отрабатывать Substring!
ошибка: вычисляются ВСЕ результирующие значения в iif.

----
то же самое
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name])]

System.Exception: Memo269: Error in expression: Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,12), Length([MasterData.name])<13, [MasterData.name]) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length

тогда как:
[Switch(Length([MasterData.name])>12, Substring([MasterData.name],0,10), Length([MasterData.name])<13, [MasterData.name])] - все ОК
или
[Switch(Length([MasterData.name])<13, [MasterData.name], Length([MasterData.name])>12, Substring([MasterData.name],0,10))] - тоже понятно все ОК

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.