Параметры динамического диапазона

Я новичок в Birt и хотел бы разработать отчет, который принимает «параметр множественного и динамического диапазона». Вот пример, чтобы лучше объяснить проблему:

Набор данных: таблица: Customer столбцы: idCustomer, имя

Я бы хотел, чтобы этот пользователь мог вставлять несколько диапазонов idCustomer для получения имен.
Пример: пользователю могут потребоваться клиенты с идентификатором от 205 до 300, с идентификатором от 501 до 670 и с идентификатором от 800 до 920.. .

Я обычно делаю то же самое в BO Crystal Report, устанавливая «Разрешить многозначность» и «Разрешить значения диапазона» для входного параметра. Существует ли что-то подобное на Бирте?

Я загружаю изображение здесь: http://i.stack.imgur.com/uvz7F.jpg. Это скриншот BO для входного параметра с «Разрешить многозначность» и «Разрешить значения диапазона».
Спасибо
GG


person GG GG    schedule 14.11.2012    source источник


Ответы (1)


Краткий ответ: нет.

Развернутый ответ: в BIRT нет возможности разрешить одному параметру принимать диапазон значений.

У него есть возможность разрешить одному параметру принимать несколько значений, но только для параметров ListBox. Кроме того, вы можете привязать только одно значение параметра отчета к заданному параметру набора данных, что означает, что вы не можете выбрать несколько значений параметра в запросе набора данных (при условии, что вы используете реляционный источник данных); вместо этого вам потребуется добавить фильтр к набору данных на основе значений параметров на вкладке «Фильтры» диалогового окна «Редактировать набор данных». (И это по-прежнему позволит вам указать только несколько отдельных значений параметра, а не несколько диапазонов значений.)

(В качестве альтернативы вы можете написать сценарий события beforeOpen для набора данных, который будет вставлять несколько значений параметра непосредственно в текст запроса набора данных вместо привязки параметров отчета к параметрам набора данных; однако это открывает ваш отчет для риска Атаки с внедрением SQL.В качестве альтернативы вы можете добавить в BIRT подключаемый модуль для привязки нескольких значений параметров.)

Таким образом, ваши варианты:

  1. Настройте один параметр ListBox с несколькими включенными значениями, что позволит пользователям выбирать все отдельные значения, которые они хотят, и фильтровать набор данных на основе значений параметров (или использовать сценарий события beforeOpen или подключаемый модуль BIRT).
  2. Настройте два параметра (для начала и конца диапазона), чтобы пользователи могли указать один диапазон значений для выбора, и привяжите параметры отчета к эквивалентной паре параметров набора данных в запросе.
  3. Настройте n пар параметров, чтобы пользователи могли указать до n диапазонов значений для выбора (например, установите 10 параметров, чтобы пользователи могли указать до 5 диапазонов значений) и привязать параметры отчета к эквивалентным параметрам набора данных в запросе.
  4. Настройте один параметр текстового поля, чтобы пользователи могли вводить диапазоны в произвольной форме (например, в формате [205..300],[501..607]), затем напишите сценарий события beforeOpen для набора данных, чтобы проанализировать введенное значение параметра для требуемых диапазонов и соответствующим образом изменить текст запроса.

Обратите внимание, что последний вариант настоятельно рекомендуется, поскольку он требует значительно больше работы, удаляет возможность указывать допустимые значения и открывает ваш отчет с риском Атаки с внедрением SQL.

person Community    schedule 15.11.2012
comment
Спасибо за исчерпывающий ответ. Кстати, первый мне не подходит, потому что у меня много тысяч клиентов. Второй - самый простой способ, но ограничивающий пользователя. В третьем я смогу узнать, сколько диапазонов хочет пользователь, а затем я также буду управлять пустым диапазоном. 4-й - хороший компромисс, но, как вы писали выше, он сильно устарел и вводит атаки SQL-инъекций. - person GG GG; 16.11.2012