Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция спбд.docx
Скачиваний:
59
Добавлен:
14.09.2019
Размер:
223.04 Кб
Скачать

Создание отчета в режиме конструктора

Уже имеем две формы, на вторую помещаем компонент TQuickRep, настраиваем источник данныз для отчета. Добавим в формы, содержащую объект TquickRep компоненты IBDatabase, IBTransaction, IBTable, (IBDatasource) для отображение таблиц для отчета, после чего ставим в IBTable свойству Active значение true. Теперь подключаем к набору данных отчет. Для этого свойство Dataset объекта TQuickRep связываем с набором данных IBTable.

Весь отчет сосотоит из набора полос различного типа, размещенных в пределах объекта TQuickRep. Наиболее важная полоса – детализация, элементы управления, расположенные на ней, последовательно выводятся в отчет для каждой строки набора данных. Для оформления простого табличного отчета потребуется еще две полосы – полоса заголовков столбцов и заголовка отчета.

Включить упомянутые полосы в отчет можно при помощи свойства Bands объекта TQuickRep. В состав свойства Bands входят шесть подсвойств логического типа, наименования которых начинаются с префикса Has. В данном случае нам необходимы три из них: HasDetail ( = true) – полоса детализации, HasColumnHeader ( = true) – заголовки столбцов, HasTitle ( = true) - заголовок отчета. Теперь нам необходимо разместить на них компоненты.

В полосе детализции размещаем экземпляры компонента TQRDBText ( аналог DBEdit). Каждый из объектов TQRDBText нужно связать с набором данных IBTable ( в его свойстве Dataset выбираем IBTable), поесле этого пользуясь свойством Datafield нужно задать для каждого объекта TQRDBText поле, значение которого будет в нем отображаться.

В полосе ColumnHeader размещаем экземпляры компонента TQRLabel. В нем испольщуем свойство Caption – вводим названия наших столбцов. Этот е компонент нужно использовать и при заголовке.

Чтобы отделить заголовки столбцов от данных нужно развернуть свойство Frame полосы (детализации?) и задать значение true для подсвойств DrawBottom, DrawTop.

Просмотреть отчет не выходя из режимы конструктора можно выбрав Preview в контекстном меню компоненат TQuickRep.

Форма, на которой размещен экземпляр объекта TQuickRep становится контейнером для отчета, в этом случае она называется Формой отчета. У нее два основных свойства: Dataset, Bands. Свойство Dataset предназначено для организации связи отчета с одним из наборов данных. Использование свойства Bands – один из путей добавления в отчет полос, которые являются экзмеплярами компонента TQRB. Развернув свойство Bands можно получить доступ к любому из подсвойств логического типа. Меняя значение этих подсвойств можно добавить или удалить из отчета следующие полосы

  1. PageHeaderBand (HasColumnHeader) - эта полоса печатается в начале каждой страницы отчета, поэтому ее используют для организации верхнего колонтитула отчета. Будет ли печататься полоса верхнего калантитута на первой странице отчета завсисит от значения подсвойства FirstPageHeader свойства Option компонента TQuickRep;

  2. TitleBand (HasTitle). Компоненты, расположенные на этой полосе, печатаются один раз в начале первой страницы отчета, а если на этой странице печатается и полоса верхнего колонтитула, то полоса заголовка помещается после него (колонтитула);

  3. ColumnHeaderBand (HasColumnHeader). Элементы управления, расположенные на этой полосе, печатаются один раз в начале каждой страницы отчета. Данная полоса находится после полосы колонтитута и после TitleBand. Чаще всего на этой полосе размещаютсяэлементы управления TQRLabel, подписи которых служат в качестве заголовков столбцов в табличном отчете;

  4. Полоса детализации (HasDetail). Значение элементов управление, размещенных на этой полосе, повторяются в отчеты для каждой записи набора данных, на который ссылается свойство Dataset объекта TQuickRep;

  5. SummaryBand (HasSummary). Это полоса итогов. Она выводится один раз в конце отчета,с разу после завершения вывода полосы детализации. (Например, в ней можно вычислить итоговую сумму столбца);

  6. PageFooter (HasPageFooter). Полоса нижнего колонтитула. Аналогична полосе верхнего колонтитута ( все свойства тоже аналогичны ему). Для колонтитутов удобнее всего использовать компонент TQRSysData.

В компонент TQRSysData входят следующие свойства:

  1. qrsDate – текущая системная дата;

  2. qrsTime – текущее системное время;

  3. qrsDateTime – текущие системные время и дата;

  4. qrsReportTitle – текст заголовка отчета;

  5. qrsPageNumber – номер текущей страницы отчета;

  6. qrsDetailCount – общее количество строк, выведенных в полосу детализациии.

Тема: Хранимые процедуры

Компонент IBStoreProc предназначен для выполнения хранимых процедур, хранящихся на серверве и возвращения результата их работ.

При соединении с базой данных свойство StoredProcedureNames загружается в список хранимых процедур базы данных.

Хранимая процедура, которая будет выполнена, указывается в свойстве StoredProcedureName.

Как правило, хранимые процедуры имеют набрру входных и выходных параметров, содержащихся в свойстве Params. Обратиться к параметру можно по его индексу, либо по его имени, используя метод Param->Name.

Количество параметров, которые имеет данных хранимая процедура, хранится в свойстве ParamCount.

Определить, готова ли хранимая процедура к выполнения помогает свойство Prepared. Если оно имеет значение true, то хранимая процедура подготовлена к выполнению.

Для подготовки хранимой процедуры к выполнению используется медот Prepare(). Для выполнения хранимйо процедуры на сервере следует вызвать метод ExecProc().

Пример:

Имеем два Edit’а, таблицу с полями id (автоинкремент), FIO, Adres, так же имеется кнопка Добавить. Пишем обработчик события кнопки «добавить»:

IBTable1->Active = false;

IBStoredProc1->ParamByName(“FIO”)->AsString = Edit1->Text;

IBStoredProc1->ParamByName(“Adres”)->AsString = edit2->Text; //AsString – для (VAR)CHAR

IBStoredProc1->Prepare();

IBStoredProc1->ExecProc();

IBTransaction1->Commit(); // перезапускаем транзакцию

IBTable1->Active = true;