У нас есть Crystal Report, который позволяет пользователю выбирать, какое из нескольких полей использовать для фильтрации. В формуле выбора записи у нас есть такой код:
if {?First Selection Type} = "CUSTOMER CODE" then {foo.CustCode} in {?First Selection Value}
else if {?First Selection Type} = "ORDER" then {bar.OrderNum} in {?First Selection Value}
...
Параметр {?First Selection Value}
определяется как многострочный параметр, поскольку для некоторых вариантов необходимо использовать строки.
К сожалению, поле bar.OrderNum
числовое.
Если я попытаюсь ввести код, как указано выше, Crystal Reports выдаст ошибку «Здесь требуется диапазон чисел».
Если я поставлю CStr({bar.OrderNum})
, он сохранится без ошибок, но не будет включать эти критерии при создании оператора SQL, что приведет к ужасной производительности, поскольку он извлекает каждый заказ из базы данных и ищет их на стороне клиента.
Если я ставлю ToNumber({?First Selection Value})
или CDbl({?First Selection Value})
, выдает ошибку "Этот массив должен быть индексирован. Например: Массив [i]".
Мне нужен какой-то способ передать эти критерии на сервер базы данных, не делая параметры более запутанными для пользователей.
Если это имеет значение, мы используем Crystal Reports 11.0.0.895 для базы данных Progress OpenEdge 10.1B03.