Вопрос по созданию отчета

отредактировано 09:15 Раздел: FastReport 2.xx VCL
Как мне сделать следующее:

Есть база с данными следующего характера-

поля:
филиал |ПК |Ксерокс|Факс

данные:

филиал1|P3-550/128/40/32 |Canon |Panasonik
филиал1|P4-1800/256/80/128 | |
филиал2|P2-400/32/10/8 | |Panasonik


Требуется получить следующий отчет:
Наименование|Всего ПК|Всего ксероксов|Всего факсов
По филиалу1 |2 |1 |1
По филиалу2 |1 | |1

Как мне это реализовать?

Комментарии

  • bakhbakh Санкт-Петербург
    отредактировано May 2004
    select
      филиал,
      count(ПК),
      count(Ксерокс),
      count(Факс)
    from
      талбица
    group by
      филиал
    order by
      филиал
    
  • отредактировано 09:15
    to bakh

    А куда вставлять этот код и перед чем обрабатывать? Т.к. я не использую SQL.
  • bakhbakh Санкт-Петербург
    отредактировано May 2004
    Это SQL-запрос, из которого ты получаешь данные...

    ЗЫ. Не заметил... ;)
    Как это ты не используешь SQL??? А откуда тогда приходят данные?.. Из пальца?.. И на потолок отправляются?.. ;)
  • отредактировано 09:15
    to bakh

    Ну как откуда данные - из базы ....

    А поля из нее вставляю непосредственно в форму отчета (в дизайнере) - типа:


    В Memo1 - Таблица."ПК" и т.д. и дальше FastReport делает все сам.
    Так что я получается не использую SQL-запросы ;)
  • отредактировано 09:15
    2 DarkEmperor:

    Рекомендую использовать группы, т.е. GroupHeader и GroupFooter.
    На GroupHeader ставишь условие по названию филиала.
    Далее на MasterData делаешь проверку (есть у тебя компьютер, факс и ксерокс) в текущей записи и прибавляем единичку к нужной переменной, т.е. это всё выглядит так:
    GroupHeader.OnBeforePrint:
    begin
     CompCount:=0;
     FaxCount:=0;
     XeroxCount:=0;
    end;
    
    MasterData.OnBeforePrint:
    begin
     if (УСЛОВИЕ_ЕСЛИ_ЕСТЬ_КОМПЬЮТЕР) then
      Inc(CompCount);
     if (УСЛОВИЕ_ЕСЛИ_ЕСТЬ_ФАКС) then
      Inc(FaxCount);
      if (УСЛОВИЕ_ЕСЛИ_ЕСТЬ_КСЕРОКС) then
      Inc(XeroxCount);
    end;
    

    Затем на GroupFooter-е выводишь CompCount, FaxCount и XeroxCount.
  • bakhbakh Санкт-Петербург
    отредактировано 09:15
    DarkEmperor написал:
    Ну как откуда данные - из базы ....
    ...
    Так что я получается не использую SQL-запросы ;)
    Да-а-а!.. Насмешил старика!.. ;)
    Ну да ладно, если не понимаешь принципов общения с БД, то используй принцип, подсказанный Vano...
  • отредактировано 09:15
    2 Vano

    СПАСИБО!!! Наконец то сделал что и хотел! ;)

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

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