IBXDatabase

отредактировано 00:10 Раздел: FastReport 3.0
У меня такой вопрос! Создаю в FastReport отчет и внем имеется запрос к базе данных. Для этого я устанавливаю компоненты IBXDatabase, IBXQuery. В программе у меня уже есть IBDatabase. Нельзя ли как нибудь передать в IBXQuery.Database этот IBDatabase. А то неудобно иметь два подключения к базе данных - одно в программе другое в FastReporte. ;)

Комментарии

  • отредактировано 00:10
    Вы можете передать в отчет конкретный датасет непосредственно из программы.
  • отредактировано 00:10
    А не подскажите как именно? Я в этом не очень силен!
  • отредактировано 00:10
    Рассмотрим пример на ADO (лень IB устанавливать).
    Считаем, что у нас есть коннект к базе.
    Действия на форме:
    - Ставим запрос (ADOQuery), который выдает нужные нам данные.
    - Кладем на форму frxDBDataset и ставим его свойству DataSet наш запрос (ADOQuery).
    - Кладем на форму frxReport.
    - Запускаем дизайнер отчета.

    Действия в дизайнере отчета:
    - Меню Report -> Data, выделяем галочкой наш датасет.
    - Используем наш датасет в отчете как обычно.

  • отредактировано 00:10
    Дело в том что у меня в самом отчете FastReport имеется диалоговое окно и в зависимости от результата формируется SQL запрос. Необходимо чтобы в отчете всё это происходило. Для этого я там и поставил IBXQuery. Но для того чтобы подсоединиться к базе в frxQuery.Database необходимо чтото прописать. Поэтому мне и пришлось установить ещё и компонент IBXDatabase. Вот у меня и получаются два коннекта к базе из одной программы что мне не очень нравится. А как обойтись без него если в программе уже есть IBDatabase.
  • отредактировано December 2006
    Решил выйти из положения след. образом

    procedure TMainForm.frxReport1BeforePrint(c: TfrxReportComponent);
    var
    IBQ: TfrxIBXQuery;
    begin
    if c is TIBXfrxQuery then
    begin
    IBQ := TfrxIBXQuery( c );
    IBQ.Database.Database:=IBDataBase1;
    end;
    end;

    и получаю ошибку

    Declaration of 'frxReport1BeforePrint' differs from previous declaration
  • gpigpi
    отредактировано 00:10
    Попробуйте
    frxIBXComponents1.DefaultDatabase:=IBDataBase1;
    
  • отредактировано December 2006
    Всё вроде нормально но не получается присвоить IBQ.DefaultDatabase:=IBDataBase1
  • gpigpi
    отредактировано 00:10
    А зачем?
    Достаточно в программе сделать
    frxIBXComponents1.DefaultDatabase:=IBDataBase1;
    а в самом отчёте добавить запрос. У запроса БД автоматом проставится IBDataBase1
  • отредактировано 00:10
    Огромное спасибо. Всё получилось.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.