Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi+MySQL+FastReport. / 25 сообщений из 38, страница 1 из 2
08.10.2018, 19:38
    #39714655
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Нужен совет. Как все это проще (точнее правильнее) сделать. Есть обработчик, который формирует отчет, но мне не нравится код.
Как это можно сделать правильно, а не через такие костыли?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
var theme_array: array of integer;
tmp_array: array of string;
i:integer;
tmp:string;
SQLText:string;
sdate,sdate2,sdate3,sdate4:string;
k:integer;
begin
//Приведение дат к формату БД
  sdate:=''; DateTimeToString(sdate,'yyyy-mm-dd',sDateEdit1.date);
  sdate2:=''; DateTimeToString(sdate2,'yyyy-mm-dd',sDateEdit2.date);
  sdate3:=''; DateTimeToString(sdate3,'yyyy-mm-dd',sDateEdit3.date);
  sdate4:=''; DateTimeToString(sdate4,'yyyy-mm-dd',sDateEdit4.date);

begin
 // Получаем список источников поступления
  GetInfoRepSQL('SELECT ist1 FROM register GROUP BY ist1 ORDER BY ist1 '); // Выполнение запроса с Open
  //Определяем размер массивов
  SetLength(tmp_array, Form1.ZReport.RecordCount);
  Form1.ZReport.First;
    while not Form1.ZReport.Eof do
      begin     // записываем в массив 
        tmp_array[Form1.ZReport.RecNo-1]:=Form1.ZReport.FieldByName('ist1').AsString;
        Form1.ZReport.Next;
      end;

EXESQL('TRUNCATE TABLE reports_template') ;  // Очищаем таблицу отчета, запрос типа EXE

 for i:=Low(tmp_array) to High(tmp_array) do
begin
//подсчет сумм по источнику из массива в 2-ух периодах, формирование запроса
SQLText:='SELECT ist1,count(*) AS all0, ';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate+''' AND '''+sdate2+''') AND (resultview = ''УДОВЛЕТВОРЕНО'')) AS ud0, ';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate+''' AND '''+sdate2+''') AND (resultview = ''РАЗЪЯСНЕНО'')) AS raz0,';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate+''' AND '''+sdate2+''') AND (resultview = ''ОТКАЗАHО'')) AS otk0,';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate3+''' AND '''+sdate4+''') AND (resultview = ''УДОВЛЕТВОРЕНО'')) AS ud1, ';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate3+''' AND '''+sdate4+''') AND (resultview = ''РАЗЪЯСНЕНО'')) AS raz1,';
SQLText:=SQLText +' (SELECT count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate3+''' AND '''+sdate4+''') AND (resultview = ''ОТКАЗАHО'')) AS otk1,';
SQLText:=SQLText +' (SELECT Count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate+''' AND '''+sdate2+''') AND (control=1) AND (resultview='''')) AS view0, ';
SQLText:=SQLText +' (SELECT Count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate3+''' AND '''+sdate4+''') AND (control=1) AND (resultview='''')) AS view1, ';
SQLText:=SQLText +' (SELECT Count(*) FROM register WHERE (ist1 = '''+tmp_array[i]+''') AND (datecreate between '''+sdate3+''' AND '''+sdate4+''')) AS all1 ';

SQLText:=SQLText +' FROM register WHERE (ist1 = '''+tmp_array[i]+''')  AND (datecreate between '''+sdate+''' AND '''+sdate2+''')';

GetInfoRepSQL(SQLText);  // Выполнение запроса с Open

//Инсертим результат во временную таблицу отчета
with Form1.ZQWork do
  begin
  Active:=false;
  Close;
  SQL.Clear;
  SQL.Add('INSERT INTO reports_template');
  SQL.Add('(naim,all0,all1,view0,view1,ud0,ud1,raz0,raz1,otk0,otk1) ');
  SQL.Add('VALUES (');
  SQL.Add(':naim,:all0,:all1,:view0,:view1,:ud0,:ud1,:raz0,:raz1,:otk0,:otk1)');
  Prepare;
ParamByName('naim').Value:=Form1.ZReport.FieldByName('ist1').AsString;
ParamByName('all0').Value:=Form1.ZReport.FieldByName('all0').AsString;
ParamByName('all1').Value:=Form1.ZReport.FieldByName('all1').AsString;
ParamByName('view0').Value:=Form1.ZReport.FieldByName('view0').AsString;
ParamByName('view1').Value:=Form1.ZReport.FieldByName('view1').AsString;
ParamByName('ud0').Value:=Form1.ZReport.FieldByName('ud0').AsString;
ParamByName('ud1').Value:=Form1.ZReport.FieldByName('ud1').AsString;
ParamByName('raz0').Value:=Form1.ZReport.FieldByName('raz0').AsString;
ParamByName('raz1').Value:=Form1.ZReport.FieldByName('raz1').AsString;
ParamByName('otk0').Value:=Form1.ZReport.FieldByName('otk0').AsString ;
ParamByName('otk1').Value:=Form1.ZReport.FieldByName('otk1').AsString ;
  ExecSQL;
  end;
end;

end;

 GetInfoRepSQL('SELECT * FROM reports_template '); //Получаем результирующую таблицу для отчета

  Form1.frxReport1.LoadFromFile(Form1.sPath + '\reports\' + 'test.fr3', true);
// Заполняем данными отчет
  with Form1.frxReport1.Variables do
       begin
          Variables[' ' + 'MyDefaultCategory'] := Null;  //Создаем пустую категорию для дальнейшего создания переменных в отчете
          Variables['period'] := quotedstr('Журнал по исполнителям по вопросам за текущий период '+sDateEdit1.Text+' - '+sDateEdit2.Text);
        end;
    Form1.frxReport1.ShowReport(true);
end;



Результат:
...
Рейтинг: 0 / 0
08.10.2018, 19:49
    #39714658
Котовасия
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Валерий666,

накати вотки или форматтер кода используй, и попустит.
...
Рейтинг: 0 / 0
08.10.2018, 19:52
    #39714661
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
КотовасияВалерий666,

накати вотки или форматтер кода используй, и попустит.
Да и так попустило) Вышел на результат, но что-то внутри подсказывает, что лупить запросы внутри цикла - это жесть.
...
Рейтинг: 0 / 0
08.10.2018, 23:15
    #39714707
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Мне почему-то кажется что этими "SELECT count(*) FROM" вы имитируете операция GROUP BY
...
Рейтинг: 0 / 0
08.10.2018, 23:39
    #39714711
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Судя по тому, что отчёты у вас лежат в папочке, программа - однопользовательская ?
...
Рейтинг: 0 / 0
09.10.2018, 08:26
    #39714746
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBrМне почему-то кажется что этими "SELECT count(*) FROM" вы имитируете операция GROUP BY
Если есть предложения, с удовольствием выслушаю)
Программа сетевая. Отчеты у каждого свои.
...
Рейтинг: 0 / 0
09.10.2018, 08:33
    #39714747
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Валерий666Программа сетевая. Отчеты у каждого свои.
И если нужно исправить один отчёт у всех, то бежим к каждому на комп ?
...
Рейтинг: 0 / 0
09.10.2018, 08:38
    #39714748
Котовасия
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Валерий666,

зачем уже полученный курсор (набор данных) загонять в ("временную") табличку?
...
Рейтинг: 0 / 0
09.10.2018, 09:06
    #39714754
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBrВалерий666Программа сетевая. Отчеты у каждого свои.
И если нужно исправить один отчёт у всех, то бежим к каждому на комп ?
Нет, зачем, есть апдейтер. Смотрятся хэши, если не совпадают то перед стартом все сливается с сервера.


авторзачем уже полученный курсор (набор данных) загонять в ("временную") табличку?
Набор данных строиться в цикле. Если подскажите как полностью его получить без временной таблички буду благодарен.
...
Рейтинг: 0 / 0
09.10.2018, 09:11
    #39714756
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
так ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
declare @Tmp table(DateCreate  smalldatetime, ResultView varchar(20), ist1 int)

insert into @Tmp select '20180901','РАССМОТР',1
insert into @Tmp select '20180901','РАССМОТР',2
insert into @Tmp select '20180901','РАССМОТР',3

insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2
insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2
insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2

insert into @Tmp select '20180901','РАЗЪЯСНЕНО',2

insert into @Tmp select '20180901','ОТКАЗАHО',2
insert into @Tmp select '20180901','ОТКАЗАHО',2
insert into @Tmp select '20170901','ОТКАЗАHО',1

-- запрос
select ist1,
       Name = case ist1 when 1 then ''
                        when 2 then 'Администрация президента РБ' 
                        when 3 then 'Другие органы госуправления'
              end,
All1 = sum(case when (DateCreate between '20180901' and '20180930') then 1 else 0 end),
All2 = sum(case when (DateCreate between '20170901' and '20170930') then 1 else 0 end),
Raz1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'РАССМОТР') then 1 else 0 end),
Raz2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'РАССМОТР') then 1 else 0 end),
Ud1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end),
Ud2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end),
Raz1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end),
Raz2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end),
Ot1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'ОТКАЗАHО') then 1 else 0 end),
Ot2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'ОТКАЗАHО') then 1 else 0 end)
from @Tmp
group by ist1


...
Рейтинг: 0 / 0
09.10.2018, 10:20
    #39714785
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBr
так ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
declare @Tmp table(DateCreate  smalldatetime, ResultView varchar(20), ist1 int)

insert into @Tmp select '20180901','РАССМОТР',1
insert into @Tmp select '20180901','РАССМОТР',2
insert into @Tmp select '20180901','РАССМОТР',3

insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2
insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2
insert into @Tmp select '20180901','УДОВЛЕТВОРЕНО',2

insert into @Tmp select '20180901','РАЗЪЯСНЕНО',2

insert into @Tmp select '20180901','ОТКАЗАHО',2
insert into @Tmp select '20180901','ОТКАЗАHО',2
insert into @Tmp select '20170901','ОТКАЗАHО',1

-- запрос
select ist1,
       Name = case ist1 when 1 then ''
                        when 2 then 'Администрация президента РБ' 
                        when 3 then 'Другие органы госуправления'
              end,
All1 = sum(case when (DateCreate between '20180901' and '20180930') then 1 else 0 end),
All2 = sum(case when (DateCreate between '20170901' and '20170930') then 1 else 0 end),
Raz1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'РАССМОТР') then 1 else 0 end),
Raz2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'РАССМОТР') then 1 else 0 end),
Ud1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end),
Ud2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end),
Raz1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end),
Raz2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end),
Ot1 = sum(case when (DateCreate between '20180901' and '20180930') and (resultview = 'ОТКАЗАHО') then 1 else 0 end),
Ot2 = sum(case when (DateCreate between '20170901' and '20170930') and (resultview = 'ОТКАЗАHО') then 1 else 0 end)
from @Tmp
group by ist1



Благодарю! Все получилось! Немного пришлось повозится с представлениями и синтаксисом.
...
Рейтинг: 0 / 0
09.10.2018, 11:42
    #39714824
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Может подскажите еще один момент?
Это уже немного другой отчет.
Есть номенклатурный справочник. На его основе хотелось бы видеть отчет с результирующими полями по группам. Рисунок ниже.
...
Рейтинг: 0 / 0
09.10.2018, 11:45
    #39714828
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Рисую вот такой запрос, как получить сумму по группе?
...
Рейтинг: 0 / 0
09.10.2018, 12:09
    #39714846
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
В отчёте - GroopFooter, где группу нужно как то выделить по номеру
...
Рейтинг: 0 / 0
09.10.2018, 15:30
    #39714974
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBrВ отчёте - GroopFooter, где группу нужно как то выделить по номеру
Немного не то, мне результат нужен ДО подвала и уже в таблице датасета.
...
Рейтинг: 0 / 0
09.10.2018, 15:43
    #39714983
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Это не ПОДВАЛ, а ПОДВАЛ ГРУППЫ
...
Рейтинг: 0 / 0
09.10.2018, 15:57
    #39714996
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Хотите данные в запросе - пристыкуйте второй запрос (на суммы) через UNION
...
Рейтинг: 0 / 0
10.10.2018, 08:46
    #39715357
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBrХотите данные в запросе - пристыкуйте второй запрос (на суммы) через UNION
Вобщем получилось так, но это не совсем то что надо, удалил пункты ("в том числе") и итоги закинул в футер груп. Для этой формы сойдет, но есть другая такая же только без периода, и там строгая форма, и все цифры должны идти по порядку.


Была мысль сделать в репорте переприсваивание значения из подвала, а подвал невидимым, но почемуто такая манипуляция даже с двойным проходом работает правильно только на первых двух группах бэндов… Вобщем я сгруппировал полем в таблице эти пункты(группа 1,2,3,4,5,6,7 и тп), с запросами я далеко на вы, и про join и пр. прочитал только на прошлой неделе, уже не говоря про агрегатные ф-ии.
Можно ли сделать еще одно поле, суммирующее по группе? т.е. чтобы было все то что есть сейчас + поле, в котором будет сумма всех записей группы 1, где группа 1, 2 где группа 2 и тп.
...
Рейтинг: 0 / 0
10.10.2018, 08:54
    #39715359
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
У вас репорта есть отдельный компонент для составления итоговых таблиц (такой мини-олап) -- на оде подается список данных, а он сам группирует их по различным разрезам и считает цифры. Если к дизайну претензий не будет, то вполне себе вариант.
...
Рейтинг: 0 / 0
10.10.2018, 09:00
    #39715361
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Можно ли сделать еще одно поле, суммирующее по группе? т.е. чтобы было все то что есть сейчас + поле, в котором будет сумма всех записей группы 1, где группа 1, 2 где группа 2 и тп.
Повторяю ещё раз, для суммирования по группе существует GROUP FOOTER
...
Рейтинг: 0 / 0
10.10.2018, 09:39
    #39715386
Котовасия
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Валерий666Можно ли сделать еще одно поле, суммирующее по группе?

https://www.fastreport.ru/public_download/docs/vcl/FR6/HTML_RU/index.html?report_with_groups.htm
...
Рейтинг: 0 / 0
10.10.2018, 10:32
    #39715416
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBrМожно ли сделать еще одно поле, суммирующее по группе? т.е. чтобы было все то что есть сейчас + поле, в котором будет сумма всех записей группы 1, где группа 1, 2 где группа 2 и тп.
Повторяю ещё раз, для суммирования по группе существует GROUP FOOTER
Да при чем тут GROUP FOOTER? На картинке нарисовал как есть.
...
Рейтинг: 0 / 0
10.10.2018, 10:51
    #39715430
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
Валерий666,

а на groupheader'е не получается разместить компоненты? Если не получается, то можно и дополнительной строкой в наборе.
...
Рейтинг: 0 / 0
10.10.2018, 11:19
    #39715444
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
"но при таком раскладе замена идёт только на 2-е первые группы, а дальше цифры не совпадают" - если честно, то ничего не понял
Код: pascal
1.
[IIF(<DS."TOREP">=0, Memo36.Value, <DS."All0">)] // сомневаюсь что так можно, и какой в этом смысл - не ясно
...
Рейтинг: 0 / 0
10.10.2018, 12:40
    #39715507
Валерий666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi+MySQL+FastReport.
DimaBr"но при таком раскладе замена идёт только на 2-е первые группы, а дальше цифры не совпадают" - если честно, то ничего не понял
Код: pascal
1.
[IIF(<DS."TOREP">=0, Memo36.Value, <DS."All0">)] // сомневаюсь что так можно, и какой в этом смысл - не ясно



<DS."TOREP">=0, поле в таблице, 0 - замена значения на Memo36.Value
Memo36.Value - сумма по группе
DS."All0" - значение из таблицы.


груп футер , либо скрытый, либо уменьшенный, в котором будут результаты.
Вобщем нужно Во так что бы было в итоге. Дизайн таблицы регламентирован, это отчетная форма, вы водить итоги или еще какие либо цифры в "неустановленные" места нельзя.

Отсюда и вопрос как это реализовать.
Я вижу 2 выхода, подмена значений и расчет в самом репорте сумм(что пока не очень получается). Либо по тому же условию отображения, к запросу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select kodvopr.groupid,kodvopr.torep,kodvopr.KODnom,kodvopr.NAIM,
 sum(case when (datecreate between '2018-01-01' AND '2018-10-09') then 1 else 0 end) AS All0,
sum(case when (datecreate between '2017-01-01' AND '2017-10-09') then 1 else 0 end) AS All1,
 sum(case when (datecreate between '2018-01-01' AND '2018-10-09') AND (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end) AS ud0,
 sum(case when (datecreate between '2017-01-01' AND '2017-10-09') AND (resultview = 'УДОВЛЕТВОРЕНО') then 1 else 0 end) As ud1,
 sum(case when (datecreate between '2018-01-01' AND '2018-10-09') AND (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end) AS raz0,
 sum(case when (datecreate between '2017-01-01' AND '2017-10-09') AND (resultview = 'РАЗЪЯСНЕНО') then 1 else 0 end) As raz1,
 sum(case when (datecreate between '2018-01-01' AND '2018-10-09') AND (resultview = 'ОТКАЗАHО') then 1 else 0 end) As otk0,
 sum(case when (datecreate between '2017-01-01' AND '2017-10-09') AND (resultview = 'ОТКАЗАHО') then 1 else 0 end) AS otk1, 
sum(case when (datecreate between '2018-01-01' AND '2018-10-09') AND (control=1) AND (resultview='')  then 1 else 0 end)AS view0,
 sum(case when (datecreate between '2017-01-01' AND '2017-10-09') AND (control=1) AND (resultview='') then 1 else 0 end) AS view1
 from kodvopr 
LEFT JOIN register ON kodvopr.KODnom = register.themeid
# WHERE kodvopr.torep=1
 group by KODnom ORDER BY kodvopr.KOD11;


Добавить еще 10 полей и суммами, в которых будет сумма по группе, чтобы выглядело это так как на табличке в скриншоте

Т.е. в SUM_All0,SUM_All1.....SUM_view0,SUM_view1 - собирались бы соответствено суммы из All0, All1.... view0,view1 в разрезе группы. Т.е. берем итем смотрим группу, считаем количество итемов в этой группе в нужном разрезе по датам и условиям записываем в SumИМЯПОЛЯ (к примеру SUM_All0).
А в репорте уже вставить условие в поле для отображения:
[IIF(<DS."TOREP">=0, <DS."SumAll0">, <DS."All0">)]
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi+MySQL+FastReport. / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]