Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отчет в qreport3 
:(
    Опции темы
uwannadie
Дата 15.8.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



появилась проблемка с группированием данных при разработке отчета в quick report'e (qreport3+delphi7)
облазил кучу форумов и все "интернеты" smile , но решение так и не нашел.
суть проблемы:
есть таблица
Код

field1|field2|field3|field4|
-------------------------------
data1|data2|data3|data4
........................................
data1|data2|data3|data4


я пытаюсь сгруппировать данные таким образом:

Код

data1:
          data2|data3|data4
          ....................................
          data2|data3|data4
...............................................
dataN:
          data2|data3|data4
          ....................................
          data2|data3|data4


но в итоге выводится всего лишь 1 запись, да и та из поля field1, хотя dataset указан у отчета нормально.
master-detail отчет тут не прокатит, т.к. таблица 1 всего  smile 
обьясните пожалуйста, каким образом можно сделать сие чудо.
smile 

Это сообщение отредактировал(а) uwannadie - 15.8.2009, 14:12
--------------------
PM MAIL   Вверх
vovk
Дата 15.8.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



а как вы пытаетесь? можно посмотреть?
PM MAIL   Вверх
uwannadie
Дата 15.8.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



вот скрины формы отчета и датамодуля:
user posted image
user posted image
--------------------
PM MAIL   Вверх
vovk
Дата 15.8.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



Ндяя ну ладно.. я тут выложу описание функций qrep в общем док по нему, прочитайте. Если будет что спросить спрашивайте.. А то так вы положили фото здания в профиль и фас, и спрашиваете как оно внутри ....

Я вообще сторонник динамического построения отчётов, ну вроде многа букафф написал, а потом, раз на кнопку клик и у тебя от что хотел

вот недавно на форуме оставил

на форму поставить CheckListBox1
получить поля с компонента както так
Код:

Код

 CheckListBox1.Items:=query1.FieldList;


, ну или по другому

И сформировать отчёт
Код:

Код

var
 i,col_Width,col_Width1:Integer;
 QR:TQuickRep;
 QRT:TQRDBText;
 SList:TStringList;
 begin
  try
    Slist:=TStringList.Create;
     for i:=0 to CheckListBox1.Items.Count-1 do
      if CheckListBox1.Checked[i]=True then
      SList.Add(CheckListBox1.Items.Strings[i]);
       if SList.Count>0 then
   begin
     try
       QR:=TQuickRep.Create(Self);
       QR.Bands.HasTitle:=True;
     with   TQRMemo(QR.Bands.TitleBand.AddPrintable(TQRMemo)) do
     begin
        AlignToBand:=True;
        Alignment:=taCenter;
        Font.Size:= 20;
        Font.Name:='Comic Sans MS';
        Lines.Text:='Ìîé ñàìûé ãëàâíûé Àò÷Îò';
     end;
       QR.Bands.HasDetail:=True;
       QR.Bands.DetailBand.Frame.DrawTop:=True;
       QR.Bands.DetailBand.Frame.DrawBottom:=True;
       QR.Bands.DetailBand.Frame.DrawLeft:=True;
       QR.DataSet:=query1;
       col_Width:= QR.Bands.DetailBand.Width div SList.Count;
       col_Width1:=col_Width+QR.Bands.DetailBand.Width mod SList.Count;
       for i:=0 to Slist.Count-1 do
          begin
            QRT:=TQRDBText.Create(QR.Bands.DetailBand);
            with QRT do
              begin
                Name:=SList.Strings[i];
                AutoSize:=False;
                AutoStretch:=True;
                Top := 0;
                DataSet := Query1;
                DataField := Slist.strings[i];
                Parent:=QR.Bands.DetailBand;
                Frame.DrawRight:=True;
                Left:=i*col_Width;
                if i=SList.Count-1 then
                Width:=col_Width1
                else
                Width:=col_Width;
              end;
          end;
         QR.Preview;
      finally
        QR.free;
     end;
   end;
  finally
    SList.Free;
  end;
end;

не идеал конечно, ещё нужно над ним поработать. Да и наверное попроще местами можно, но всёже

В общем, про группы могу посмотреть завтра, а то сегодня уже немного вина выпил.. ну никак думать не хочется..
К стати это я написал в ответ на вопрос на другом форуме, когда читал вопрос я о куик репорте не знал ничего кроме того что он входил в стандартную поставку до 6 го дельфика.

Это сообщение отредактировал(а) vovk - 16.8.2009, 06:38

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  QuickReport_2_0_Copyright_1997.rar 146,15 Kb
PM MAIL   Вверх
vovk
Дата 17.8.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



примерно так будет с заголовком, и группировкой. добивал на скорую руку,  если понравится доработаете..
Код

 var
 i,col_Width,col_Width1:Integer;
 QR:TQuickRep;
 QRT:TQRDBText;
 QRTLB:TQRLabel;
 GRB:TQRGroup;
 SList:TStringList;
 begin
  try
    Slist:=TStringList.Create;
     for i:=0 to CheckListBox1.Items.Count-1 do
      if CheckListBox1.Checked[i]=True then
      SList.Add(CheckListBox1.Items.Strings[i]);
       if SList.Count>0 then
   begin
     try
       QR:=TQuickRep.Create(Self);
       QR.Bands.HasTitle:=True;
     with   TQRMemo(QR.Bands.TitleBand.AddPrintable(TQRMemo)) do
     begin
        AlignToBand:=True;
        Alignment:=taCenter;
        Font.Size:= 20;
        Font.Name:='Comic Sans MS';
        Lines.Text:='Ìîé ñàìûé ãëàâíûé Àò÷Îò';
     end;
       QR.Bands.HasDetail:=True;
       QR.Bands.DetailBand.Frame.DrawTop:=True;
       QR.Bands.DetailBand.Frame.DrawBottom:=True;
       QR.Bands.DetailBand.Frame.DrawLeft:=True;
       QR.DataSet:=query1;
       QR.Bands.HasColumnHeader:=True;
       QR.Bands.ColumnHeaderBand.Frame.DrawTop:=True;
       QR.Bands.ColumnHeaderBand.Frame.DrawBottom:=True;
       QR.Bands.ColumnHeaderBand.Frame.DrawLeft:=True;
       col_Width:= QR.Bands.DetailBand.Width div SList.Count;
       col_Width1:=col_Width+QR.Bands.DetailBand.Width mod SList.Count;
       GRB:=TQRGroup.Create(QR);
        GRB.Parent:=QR;
       with (GRB.AddPrintable(TQRDBText)as TQRDBText) do
       begin
        AutoSize:=False;
        Width:=Parent.Width;
        Alignment:=taCenter;
            DataSet := Query1;
            DataField := SList.Strings[2];
       end;
       GRB.Master:=QR.Bands.DetailBand;
       GRB.Expression:=SList.Strings[2];
       for i:=0 to Slist.Count-1 do
          begin
            QRTLB:=TQRLabel.Create(QR.Bands.ColumnHeaderBand);
            QRT:=TQRDBText.Create(QR.Bands.DetailBand);
            with QRT do
              begin
                Name:=SList.Strings[i];
                AutoSize:=False;
                AutoStretch:=True;
                Top := 0;
                DataSet := Query1;
                DataField := Slist.strings[i];
                Parent:=QR.Bands.DetailBand;
                Frame.DrawRight:=True;
                Left:=i*col_Width;
                if i=SList.Count-1 then
                Width:=col_Width1
                else
                Width:=col_Width;
              end;
              with QRTLB do
              begin
                Name:=SList.Strings[i];
                AutoSize:=False;
                AutoStretch:=True;
                Top := 0;
                Caption := Slist.strings[i];
                Parent:=QR.Bands.ColumnHeaderBand;
                Frame.DrawRight:=True;
                Left:=i*col_Width;
                if i=SList.Count-1 then
                Width:=col_Width1
                else
                Width:=col_Width;
              end;
          end;
         QR.Preview;
      finally
        QR.free;
     end;
   end;
  finally
    SList.Free;
  end;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.2021 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.