Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Master-Detail (FastReport)


Автор: SPrograMMer 9.11.2006, 15:55
Есть FastReport Какой-то Точно знаю V<3.0. Demos`ов к сожелению нету. Иначеб разобрался наверное....

Ну так вот люди научите Master - Detail Отчеты в нем творить.
В справке написано только:
Цитата

Для построения этого отчета необходимо разместить на листе бэнды «master data» и «detail data», затем поместить в них объекты со ссылками на нужные данные. Порядок, в котором бэнды размещаются на листе, не имеет значения - сначала будет напечатана строка из master, потом соответствующие ей строки из detail. Отчет будет формироваться до тех пор, пока есть данные для master. Если надо, чтобы master с его подчиненным списком печатался с нового листа, установите для бэнда флажок «Формировать новую страницу». У отчета есть особенность - если для текущей строки из master список detail пуст, строка master печататься не будет. Если все же необходимо распечатать такие строки, для бэнда «master data» нужно установить флажок «Печатать, если detail пуст». Пример отчета см. в демо, отчет №3.

Естественно что Демо №3 у меня отсутствует...

Ну так вот на простейшем премере. Как я понимаю надо 2 таблицы - одна Master, другая Detail. Структуры пусть следующие:
TableMaster
Код
ID Integer Primary Key
FIO VarChar(255)  /* в таблице содержаться ФИО кого-то */
Field2 Integer    /* и еще дурота для "объема" таблицы */

TableDetail
Код
ID Integer Primary Key
IDFIO Integer    /* Это поле для связи. понятно. */
Data1 Integer    /* Данные 1 */
Data2 VarChar(10) /* данные 2*/


Т е на выходе я хочу получить что-то вроде:
Код
FIO_1   Field2_1
  1 Data1    Data2
  2 Data1    Data2
  3 Data1    Data2
FIO_2  Field2_2
  1 Data1    Data2
  2 Data1    Data2
FIO_3   Field2_3
  1 Data1    Data2
  2 Data1    Data2
  3 Data1    Data2
  4 Data1    Data2
  5 Data1    Data2

Это ведь и есть Master-Detail отчет?! или я ошибаюсь....


Ну и как его сотворить? Мой алгоритм действий (корявый, и не опробованный) :
1. Создать два кверя (Query1 и Query2) для каждой из таблиц
2. Создать для объекта frDBDataSet - для каждого из кверев, один для Master`a; другой для Detail`а
3. В отчет кинуть два бэнда (как в help`е говриться) MasterData и DetailData, к первому приципить Query1 через frDBDataSet1, ко второму - Query2, через frDBDataSet2.
4. А дальше... как-то надо установить связь между полями TableDatil.IDFIO и TableMaster.ID...(lookup`ное поле сотворить? только где?) что бы было то что хочу получить в результате. Как?



PS: если у кого-то есть демки (хелп для репорта v2.3, а сам репорт -  smile  наверное то же v2.3) репорта прицепите... Сам разберусь smile  smile 

Автор: Vas 9.11.2006, 20:38
Пжалуйста, токи демки для FR 2.4, но видимо ничем не отичаютс яот 2.3 smile

Автор: SPrograMMer 9.11.2006, 23:18
Цитата(Vas @  9.11.2006,  20:38 Найти цитируемый пост)
токи демки для FR 2.4, но видимо ничем не отичаютс яот 2.3 smile

пасибо... чичас посмотрим... smile 

Автор: SPrograMMer 11.11.2006, 05:42
Цитата(Vas @  9.11.2006,  20:38 Найти цитируемый пост)
Пжалуйста, токи демки 

Угу посмотрел... там все на Table`ах закручено... а мне нужны Query... Ибо запрос не хилинький и держать его непосредствноо в Table нельзя... значит попытаюсь использовать View....

Автор: Vas 11.11.2006, 09:23
А смысл, вместо Table ставится Query без проблем. 

Автор: SPrograMMer 11.11.2006, 21:52
Цитата(Vas @  11.11.2006,  09:23 Найти цитируемый пост)
able ставится Query без проблем.  

 у элемента Table (в отличии от Query), есть свойства MasterSource, и MasterFields. Вот по какой причине...

Хм... а View не так уж прост как оказалось: http://forum.vingrad.ru/topic-120751.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)