Как на одном бэнде использовать разные источники?

отредактировано 11:48 Раздел: FastReport 2.xx VCL
При построении отчета мне требуется выводить на одном MasterData результаты из разных запросов к базе данных. Эти запросы синхронизированы по какому-то полю, но количество их разное (в смысле: в одном из результатов присутствуют не все строки данных).
Ну так вот: каким образом можно синхронизировать данные?

К примеру вывожу в Memo1: query1.data1 а в Memo2: query2.data1
В обоих запросах есть некий ID, по которому я и хочу их синхронихировать.
К сожалению объединение запросов невозможно (каждый из запросов использует кучу таблиц с разными критериями - очень сложные получаются), и использоваться этих запросов будет всего 3-4.

Комментарии

  • UnMiUnMi Питер
    отредактировано 11:48
    Можно, мне так кажется, по разному. Например можно ввести переменные, связав их с соответствующими полями запросов. И эти переменные выводить в Memo.
  • отредактировано 11:48
    ;) Я в таких случаях использую еще и третий запрос с результатом в виде этого поля "ID". Его и использую как DataSource для Бэнда. Одно условие: сортировка в запросах должна быть по полю "ID". Ну а в скрипте мемок или Бэнда
    if [DialogForm.Query3."ID"]=[DialogForm.Query2."ID"] then
    begin
    if not Query2.EOF then
    begin
    DisplayResult:=[DialogForm.Query2."Data"];
    Query2.Next;
    end;
    end
    else DisplayResult:=null;
    (DisplayResult: переменная для вывода в мемо)
    То же самое повторяем для Query1.
    Query3 запрос простой, к одной таблице, потому тормозов не добавляется.
  • отредактировано 11:48
    А можно это решить через SQL- запросы, объединенные через UNION или временные таблицы в БД? Если отчет слишком уж сложный, создание временных таблиц- иногда лучший выход.
    Если так не хочешь, можно сделать с тремя запросами: первый выбирает ключевое поле, как сказал Андрей С, он назанчается мастер-дате нулевой высоты. К нему цепляются 2 детэйл-даты со своими запросами, в качестве источника - первый запрос.
    Так проще. Единственно что- сортировка будет неизвестно какой.

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

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