При разработке отчетов для пользователей, не знакомых с Crystal Reports или с экспертом выборки Select Expert, рано или поздно возникает необходимость взаимодействия с пользователем для ввода значений, влияющих на выборку записей, условное форматирование и фильтрацию данных. Наличие такого взаимодействия особенно важно в тех случаях, когда пользователь не располагает установленной копией Crystal Reports, но желает иметь отчет с возможностью настройки различных параметров. В случае использования отчетов по запросу, выполняемых через Web с помощью Crystal Reports Server/BusinessObjects Enterprise, пользователь вообще не имеет возможности вносить изменения в отчет посредством эксперта Select Expert.
Идеальным решением для ввода различных условий будет отображение пользователю диалогового окна с предложением ввода данных, со списком значений по умолчанию или с диапазоном значений. Это поможет пользователю ввести правильные значения. Введенные значения могут быть переданы в Select Expert для изменения настроек выбора записей и форматирования, а также быть включенными в отчет для вывода условий отбора.
Такой подход реализуется с помощью полей параметров. Эти поля отображаются пользователю при обновлении им отчета. Значение, введенное пользователем, передается в Select Expert, в формулы отчета или в формулы условного форматирования для настройки отображения отчета по желанию пользователя. Пользователю не нужно знать, как вводить критерии выбора или формулы условий для настройки поведения отчета.
Поля параметров — это одна из наиболее изменившихся, если не самая изменившаяся функциональная возможность в Crystal Reports XI. Помимо новой процедуры для создания критериев выборки, Crystal Reports XI предлагает опцию, которую все так долго ждали — динамические и каскадные подсказки или “списки выбора” (pick list) для полей параметров. Динамические подсказки или “списки выбора” будут генерироваться динамически каждый раз, когда перед пользователем будет появляться поле параметра — новые добавленные в исходную базу данных значения будут отображаться в списке выбора сразу же после добавления. А каскадные подсказки или “списки выбора” позволяют одной подсказке контролировать другую: если пользователь в одном списке выбора выберет значение Colorado (Колорадо), то в следующем списке выбора в качестве значений будут отображаться только те города, которые расположены в штате Колорадо. Динамические и каскадные списки выбора более подробно будут описываться далее в этой главе.
Рассмотрим отчет, показанный на рис. 13.1.
Рис. 13.1. Пример отчета с тремя полями для выборки записей
В этом отчете используются три поля для выборки записей:
• Order Date (Дата заказа) — отбор записей по критерию Between (Между) для получения списка заказов за 2004 год (между 1 января и 31 декабря).
• Region (Регион) — отбор записей по критерию One Of (Одна из) для получения списка заказов из регионов с кодами AL, AR, AZ, СО, СТ и DC.
• Customer Name (Наименование клиента) — отбор записей по критерию Like (Подобна) для получения списка заказов от клиентов, наименование которых содержит строку Bik.
Эти параметры жестко закодированы в эксперте Select Expert, а текстовые объекты в отчете только отображают ограничения отбора данных.
Трудности возникают тогда, когда появляется желание предоставить пользователю возможность легко изменять эти параметры по своему усмотрению в любой момент. Внешний вид отчета измениться не должен, но пользователь должен иметь возможность повлиять на отбор записей (и достаточно знать о тех проблемах, которые могут возникнуть после изменения настроек). Также нужно иметь доступ к редактированию текста в
объекте, который показывает, какие записи отобраны.
Но даже если предоставить пользователю такой доступ, он будет тратить время на изменение настроек при каждом выполнении отчета. В таких случаях лучше всего использовать поля параметров.
Создание полей параметров — процесс как минимум двухэтапный. Третий шаг необязателен:
1. Создание поля параметра.
2. Использование поля параметра для выборки данных.
3. Помещение поля параметра в отчет для показа критерия отбора, возможно, путем внедрения в текстовый объект.