Управление выборкой записей

Оценить
(0 голоса)

Одно из главных преимуществ интеграции отчетов Crystal Reports в коде Visual Basic заключается в возможности оперативной выборки записей в отчете на основе взаимодействия пользователя с приложением, написанным на Visual Basic. Для своего приложения вы можете спроектировать отдельный интерфейс пользователя и составить отдельную формулу выборки записи из отчета. Поскольку в Visual Basic имеются все возможности для организации пользовательского интерфейса (к числу которых можно отнести, например, функцию выбора даты и другие специальные элементы управления), имеет смысл использовать именно их, а не поля параметров Crystal Reports.

Формула выборки записи, которую вы передаете RDC, должна соответствовать синтаксису Crystal Reports, поэтому вам необходимо знать порядок составления формул в Crystal Reports. Если для выборки записей вы обычно используете эксперт Crystal Reports Select Expert, вы должны ознакомиться с создаваемой формулой, прежде чем строить формулу выборки в VB-приложении. Формулой выборки записи в Crystal Reports является булевская формула, которая сужает диапазон включаемых в отчет записей базы данных. Например, следующая формула позволяет выбрать записи заказов по штату Техас, поступивших в первом квартале 2006 года:

{Orders.Order Date} In #1/1/2001# To #3/31/2006#

And {Customer.Region} = "TX"

Совет. О выборе записей и том, как составляются булевские формулы, подробно рассказывалось в главах 4 и 5.

Чтобы определить формулу выборки записи, воспользуйтесь свойством RecordSelectionFormula объекта Report. Данное свойство может быть представлено как строковым выражением, так и переменной. Далее показан взятый из приложения-примера фрагмент кода, в котором определяется выбор записей на основе содержимого текстовых окон From Date и То Date:

'Задание формулы выборки записей на основе дат

strSelectionFormula = "{Orders.Order Date} in #" & _ txtFromDate & "# to #" & txtToDate & "#"

Report.RecordSelectionFormula = strSelectionFormula

Советы по составлению формул выборки записей

При составлении формул выборки записи необходимо учитывать ряд моментов.

В частности, существует несколько приемов, которыми вы можете воспользоваться, чтобы убедиться в том, что ваши строковые значения отформатированы правильно и что большая (насколько это возможно) часть SQL-запроса к базе данных выполняется на сервере базы данных, а не на ПК.

Передаваемое вами строковое значение должно в точности соответствовать синтаксису формул Crystal Reports. Это касается также использования зарезервированных слов и пунктуации. Предыдущий пример показывает, что вокруг значений даты в формуле выбора необходимо ставить знак фунта (#).

Пользователи часто забывают заключать литералы в кавычки. Предположим, что вам необходимо передать следующую формулу выбора:

{Customer.Region} = 'TX' And {Orders.Ship Via} = 'UPS'

Если символы TX и UPS будут взяты из элементов управления, например из текстового или комбинированного поля, то для переноса формулы выбора в строковую переменную следует использовать следующий код:

strSelectionFormula = "{Customer.Region} = " & txtRegion & _

" And {Orders.Ship Via} = " & cboShipper

На первый взгляд, этот фрагмент кода применяется для составления правильно отформатированной формулы выбора записи Crystal Reports. Однако если эту строку передать свойству RecordSelectionFormula, то во время выполнения отчета произойдет сбой. Почему? Лучший способ выявить причину проблемы — это просмотреть содержимое формулы strSelectionFormula в окне Immediate, установить точку прерывания или воспользоваться другими доступными в VB способами отладки. Вы увидите, что содержимое строковой переменной после выполнения предыдущего кода выглядит так:

{Customer.Region} = ТХ And {Orders.Ship Via} = UPS

Обратите внимание на отсутствие каких-либо кавычек или апострофов вокруг литералов, сравнение которых осуществляется в формуле выбора записи. Следующий фрагмент кода создает синтаксически правильную формулу выбора:

strSelectionFormula = "{Customer.Region} = 1" & txtRegion & _

And {Orders.Ship Via} = '" & cboShipper & "1"

Имейте в виду, что если ваш отчет будет использовать базу данных SQL, то во время работы с отчетом компонент RDC будет пытаться преобразовать в SQL максимально возможное количество формул выборки записей. Это касается как формулы выборки записей, которую вы передаете из своего приложения, так и формулы выборки записей, которую вы составляете непосредственно в Crystal Reports. В частности, использование встроенных функций формул Crystal Reports, таких как Uppercase или ToText, обычно приводит к тому, что выборка записи будет возложена на клиента (персональный компьютер), а не сервер базы данных. Это может привести к существенному снижению производительности. Во избежание возникновения подобной ситуации вы должны составлять формулы выборки записей, передаваемые из вашего приложения, так же внимательно, как и в Crystal Reports. Вопросы, касающиеся степени производительности при выборке записей, подробно рассматривались в главах 4 и 15.

Совет. Вы также можете создать SQL-onepamop, который отчет будет использовать прямо в вашем VB-приложении, а затем передать его в отчет, просто установив свойство SQLQueryString объекта Report.

Настройка формул
Передача значений полей параметров
Работа с группами отчета
Условное форматирование и форматирование разделов
Событие Format

Добавить комментарий


Защитный код
Обновить