Изменение источника данных во время выполнения

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

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

Один из способов добиться такого эффекта — это создать формулу выборки записей Crystal Reports или SQL-оператор на основе пользовательского интерфейса. Затем эту формулу или SQL-оператор можно передать в отчет, как описывалось ранее в этой главе. Это даст пользователю возможность взаимодействовать с сеткой данных, формой или любым другим визуальным интерфейсом приложения и создавать отчет на основе его содержимого.

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

Синтаксис метода SetDataSource выглядит следующим образом:

[форма] Объект. SetDataSource данные, дескриптор_данных, индекс_таблицы

В этом операторе Объект — это RDC-объект Database (находящийся в иерархии ниже объекта Report), в который вы хотите передать данные; данные — набор данных DAO, ADO или RDO, из которого вы хотите передать данные в отчет; де скрипт органных и индекс_таблицы — это параметры, обозначающие, соответственно, тип данных и индекс таблицы, для которой вы хотите изменить источник данных. Для параметра дескриптор_данных всегда должно указываться значение 3, а для параметра индекс_ таблицы — номер таблицы, для которой требуется установить новый источник данных.

Таким образом, если вы создали отчет RDC и присвоили объекту Report имя Report, а объекту ADO Recordset — имя ADOrs, тогда приведенный ниже код будет передавать содержимое результирующего набора в отчет. При распечатке, экспорте или передаче отчета в Report Viewer содержимое этого результирующего набора будет использоваться объектом Database отчета для заполнения отчета:

Report.Database.SetDataSource ADOrs,3,1

Обратите внимание, что двум последним параметрам метода SetDataSource присвоены значения 3 и 1, обозначающие единственный допустимый дескриптор данных (3) и первую таблицу в базе данных (1).

На самом деле в RDC доступны две версии метода SetDataSource. Рассмотренный выше метод применяется ко всему объекту Database, требуя, чтобы в качестве третьего аргумента был указан индекс таблицы. Существует еще метод SetDataSource, доступный для объекта DatabaseTable. Синтаксис этого метода практически такой же: единственное отличие заключается в том, что в этой версии указывать индекс таблицы не нужно, поскольку этот метод применяется только к одному объекту Table.

Если вы применяете метод SetDataSource , чтобы изменить источник данных для таблицы базы данных, обязательно удостоверьтесь в том, что источник данных, который вы передаете в отчет, остается в контексте, когда бы отчет ни запускался. Например, вы можете определить объект Report как глобальный объект приложения (объявив его на уровне модуля). Но если вы передадите ему источник данных, который был объявлен на уровне формы, и затем попытаетесь запустить отчет в другой форме, источник данных окажется вне контекста, и отчет не запустится. Если поддержка контекста невыгодна, для считывания содержимого источника данных и его передачи объекту Report используйте метод ReadRecords. Более подробную информацию об этом методе можно найти в оперативной справочной системе, в разделе “ReadRecords” (“Метод ReadRecords”).

Совет. RDC предлагает еще два метода, доступные из объекта Da tabase (который находится ниже объекта Report)> подобные методу SetDataSource. Метод AddOLEDBSource добавляет таблицу OLE DB и делает ее поля доступными для отчета. Метод AddADOCommand добавляет и передает в отчет набор записей ADO в виде таблицы посредством соединения и команды ADO.

 

Несвязанные поля
Перехват событий Report Viewer
End Sub
Обработка ошибок
Другие свойства и методы RDC

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


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