Помогите разобраться с передачей БД Fib+ в отчет

отредактировано 17:47 Раздел: FastReport 4.0
Здравствуйте.
Используем FastReport версии 4.12.12
Сначала формировали отчеты передачей внешних датасетов в отчет через TfrxDBDataset. Но после более глубкого освоения FastReport переделали технлологию и стали создавать запросы внутри очета (используя TfrxFIBQuery). Подключение к базе передается в отчет через свойство DefaultDatabase компонента TfrxFIBComponents. Сейчас появилась необходимость создавать отчеты которые использую 2 базы. Для этого я положил еще один компонент TfrxFIBComponents на форму и назначил ему DefaultDatabase другую базу. Но в дизайнере я не увидел того, что можно подключиться еще к одной базе, то есть в редакторе свойства подключения к базе у компонента TfrxFIBQuery, который я положил на закладке data дизайнера отчетов, я не увидел возможности выбора другого подключения. Правильно ли я передаю 2 базы в отчет, или надо делать как то по другому?

Да, еще, возможно, очень важное замечание. Фактически имена компонентов TpFIBDatabase которые присваиваются компонентам TfrxFIBComponents.DefaultDatabase имеют одинаковые имена, хотя это разные экземпляры и подлкючены они к разным базам. Возможно внутри дизайнеры вы как то используете эти имена, и встречая 2 одинаковых имени считаете их одной базой? Может быть есть возможность задать имя подключения к базе, то есть то имя, которое увидит разработчик отчета внутри дизайнера, когда будет выбирать какое подключение ему использовать?

Заранее спасибо за ответ.

Комментарии

  • отредактировано May 2013
    А кто мешает добавить в дизайнере FR два обьекта FIBDataBase и прописать в них пути к разным базам?
    Тогда можно обойтись и одним компонентом TfrxFIBComponents на форме и необязательно прописивать в немDefaultDatabase.
  • отредактировано 17:47
    Dimon184 написал: »
    А кто мешает добавить в дизайнере FR два обьекта FIBDataBase и прописать в них пути к разным базам?
    Тогда можно обойтись и одним компонентом TfrxFIBComponents на форме и необязательно прописивать в немDefaultDatabase.
    Да, можно сделать и так. Но это более долгий путь. Надо не только положить 2 компонента в отчет, но и проинициализировать их пути к базам. То есть написать в скрипте дополнительный код, и причем делать это придется в каждом отчете.
  • gpigpi
    отредактировано 17:47
    К сожалению, другого варианта у Вас нет. Из приложения Вы можете передать коннект только к одной базе данных
  • отредактировано 17:47
    var написал: »
    Да, можно сделать и так. Но это более долгий путь. Надо не только положить 2 компонента в отчет, но и проинициализировать их пути к базам. То есть написать в скрипте дополнительный код, и причем делать это придется в каждом отчете.
    Зато отчет станет более универсальным и меньше будет зависеть от екзешника
  • отредактировано 17:47
    gpi написал: »
    К сожалению, другого варианта у Вас нет. Из приложения Вы можете передать коннект только к одной базе данных

    Добрый день. Сделал и 2 функции начала, которые возвращают строку подключения и параметры подключения к дополнительной базе. Проявилась новая особенность - если на страницу Data положить компонент TfrxFIBDatabase то та база, которая передается из приложения становиться не доступна. Вернее так - если сначала положить запросы, они автоматом цепляются к базе переданной из приложения. Но потом, после того как положил TfrxFIBDatabase то база переданная из приложения становиться не доступна. Вернее, в свойсвах запросов она сохранятеся, и даже работает, но в списке выбора баз ее уже нет. Ладно, пусть это будет особенность.
    Сделал еще 2 функции которые возвращают строку подключения и параметры подключения к основной базе.
    Получается так - в событии OnStartReport пишу инициализацию подключений к базам данных:

    procedure frxReport1OnStartReport(Sender: TfrxComponent);
    begin
    DB_BA.DatabaseName := GetBADatabaseReg;
    DB_BA.Params.Text := GetBADatabaseParamsString;
    DB_BA.connected := true;

    DB_PRJ.DatabaseName := GetPRJDatabaseReg;
    DB_PRJ.Params.Text := GetPRJDatabaseParamsString;
    DB_PRJ.connected := true;
    end;

    Все проходит отлично.
    Далее, кладу TfrxFIBQuery на закладку Data. Подключаю к одному из компонентов TfrxFIBDatabase (очень большое неудобство, что их надо при разработке отчета заполнять что бы они подключились, потом буду думать над автоматикой), заполняю запрос, нажимаю сохранить (зеленая галка в редакторе). Запрос сохраняется, но список полей справа, в заклдадке Data не появляется, хотя у компонента Database свойство Connected стало true. То есть вроде как запрос открывался, но поля почему то не получил (запрос гарантированно правильный).
    Запускаю отчет (больше ничего нет в нем). Все нормально без ошибок.
    Далее на страницу отчета кладу бэнд MasterData и в окне SelectDataset указываю ему запрос. Получаю сообщение об ошибке которое прилагаю.
    Чую что не там где то инициализирую и открываю базы, но где это еще делать ума не приложу! Помогите!

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

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