powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR10. Как построить диаграмму для результата формулы и группы.
21 сообщений из 21, страница 1 из 1
CR10. Как построить диаграмму для результата формулы и группы.
    #36402241
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CR10. В отчете есть Group Footer , в которой имеются Group#1 и результат формулы Show_Time_AVG:

Код: plaintext
1.
2.
3.
WhilePrintingRecords;
NumberVar AVG_;
AVG_Filial:= {@Show_Time_} \ {#Count_TT_};
AVG_Filial
, отображающий количество определенных данных для каждой из Group#1.

Вопрос :
как построить диаграмму для этих данных группы ?
Диаграмма Advanced не дает выбрать формулу Show_Time_AVG
В хелпе не нашел - есть только для сумм, который формируюися автоматически (не через формулу)
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36402784
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что считают формула {@Show_Time_} и поле промежуточного результата {#Count_TT_}??
Если для Group#1, то тогда можно дальше пытаться ответить.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36402838
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNattyЧто считают формула {@Show_Time_} и поле промежуточного результата {#Count_TT_}??
Если для Group#1, то тогда можно дальше пытаться ответить.

{@Show_Time_} - считает сумму времени выполнения акций в минутах,
{#Count_TT_} - количество выполненных акций.
Все это для Group#1 и расположены они в Group Footer.

А вот график нужно построить по среднему времени AVG_Filial из формулы Show_Time_AVG.
Но все равно ни {@Show_Time_} ни {#Count_TT_} не отображаются в свойствах диграммы.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36404419
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор{@Show_Time_} - считает сумму времени выполнения акций в минутах. - ОК, оставляем..
автор{#Count_TT_} - количество выполненных акций. - а почему поле промежуточного итога? Здесь нужно накопление? Выполнение формулы Show_Time_AVG в WhilePrintingRecords заставляет нас разделять их по времени выполнения, и для диаграммы это не есть гуд .
Количество по условию для группы можно посчитать, к примеру, просто создав
1. Формулу условия <Новая формула>
Код: plaintext
if {Поле} = <Условие> then  1  else  0 
2. Итоговое поле <Итог1> с полем подведения итога по формуле и типом итога - суммой, ну, и, ессно, по группе.
Код: plaintext
Sum(<Новая формула>, Group# 1 )
Эти формулы выполняются в одно время.

Далее. Если возможна замена {#Count_TT_} на поле итога, как сказала выше, то
1. Создаем итоговое поле <Итог_AVG>, в котором полем подведения итога будет формула, содержащая
Код: plaintext
{@Show_Time_} \ <Итог1>
, а типом итога будет, к примеру, min или max - неважно, он у нас единственный неповторимый. Подводим по группе, конечно же..
2.Имеем группу Group#1 и подведенный итог по группе <Итог_AVG> - диаграмма сама предложит групповой вариант при размещении ее в заголовке или подвале группы
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36407700
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, но в этом месте затык
Код: plaintext
Sum(<Новая формула>, Group# 1 )

Выводится при сохранении формулы :
this filed cannot be summarized и подсвечивает "<Новая формула>"

Видимо нельзя использовать формулу в аргументах для Sum , только поля.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36408036
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Sum(<Новая формула>, Group# 1 )
<Новая формула> - замените на реальное название Вашей формулы, например, {@New_Formula}
Видимо нельзя использовать формулу в аргументах для Sum , только поля. Конечно, можно, если это формула того же времени выполнения, что и Sum. Или сделайте не через формулу, а через итоговое поле.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36408757
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNatty
Код: plaintext
Sum(<Новая формула>, Group# 1 )
<Новая формула> - замените на реальное название Вашей формулы, например, {@New_Formula}
Видимо нельзя использовать формулу в аргументах для Sum , только поля. Конечно, можно, если это формула того же времени выполнения, что и Sum. Или сделайте не через формулу, а через итоговое поле.

1. Конечно я поставил свою формулу count

Код: plaintext
1.
WhilePrintingRecords;
If {Table.NumberSTR} = "555559" then  1  else  0 

и далее

summ
Код: plaintext
sum ({@count},GroupName ({Table.Пользователь}))
Вот на {@count} и ругается.

2. А что имеете ввиду под "формула того же времени выполнения",
count размещен в Details
А summ мне в принципе не дает создать - "this filed cannot be summarized".

3. Или сделайте не через формулу, а через итоговое поле.
Через Running Total Field не дает также.

Код: plaintext
sum ({#RTotal0})

Выводится тот же "This filed cannot be summarized", но подсвечивает {#RTotal0} .

Так в чем же моя ошибка? Не понятно.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36409586
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Время выполнения формул - это тот "проход", в момент которого выполняется вычисление. У Кристала их 2 (точнее, 3, это почитайте)
Это прямое указание, в какой момент выполнять вычисление. Уберите его.
Код: plaintext
WhilePrintingRecords;
Оставьте только вот это. Эта формула честно отработает, а потом спокойно вычислится или Sum или Count.
Код: plaintext
If {Table.NumberSTR} = "555559" then  1  else  0 
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36411439
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNatty,

Благодарю за советы.
Но не все получается, если вы не против, то все по порядку.
Формула count размещена в cекции Details
Код: plaintext
If {Table.NumberSTR} = "555559" then  1  else  0 
Формула summ размещена в cекции Group
Код: plaintext
sum ({@count},GroupName ({Table.Пользователь}))

Тут все отлично считает и диаграмма предлагает формулу summ !

Далее не получается, видимо я что -то не понял из ваших предложений.
Все ли верно?:

Формула <Итог1> размещена в cекции Group
Код: plaintext
{@Show_Time_} \ <Итог1>
Формула <Итог1> все подсчитывет и значения отображает, но диаграмма все равно не позволяет выбрать <Итог1>.
Или <Итог1> это не формула ?
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36413454
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVBФормула count размещена в cекции Details
Код: plaintext
If {Table.NumberSTR} = "555559" then  1  else  0 
Формула summ размещена в cекции Group
Код: plaintext
sum ({@count},GroupName ({Table.Пользователь}))
Тут все отлично считает и диаграмма предлагает формулу summ !
Дальше
PVBФормула <Итог1> размещена в cекции Group
Код: plaintext
{@Show_Time_} \ <Итог1>


Здесь я так понимаю формула <Итог1>
Код: plaintext
{@Show_Time_} \ {@summ}

Дальше нужно создать критерий, то есть, еще итоговое поле
<Итог_AVG> , для которого
- поле подведения итога (выбираете из выпадающего списка) Итог1
- тип подводимого итога - min или max (значение единственное, оно и будет)
- для группы Group#1
И вот этот критерий уже и выбирать..
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36415163
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNatty[quot PVB]........
Дальше нужно создать критерий, то есть, еще итоговое поле
<Итог_AVG> , для которого
- поле подведения итога (выбираете из выпадающего списка) Итог1
- тип подводимого итога - min или max (значение единственное, оно и будет)
- для группы Group#1
И вот этот критерий уже и выбирать..

При создании <Итог_AVG>
этот пункт
Код: plaintext
- поле подведения итога (выбираете из выпадающего списка) Итог1 
не проходит, так как не отображается в выпадающем списке Итог1.
Код: plaintext
{@Show_Time_} \ {@summ}
Отображаются только формула count и поля из таблицы.
Это и есть первоначальная проблема, которая не дает построить диаграмму по вычисляемым полям.

поле подведения итога (выбираете из выпадающего списка) Итог1
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36417092
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNatty ,
извините , но прошу уточнить , вы уверены в своих рекомендациях?
Дело в том, что не только у меня такая проблема , в других ветках так же пытались, безуспешно как я понял, данную проблему:
Но обычные графики он не строит со своим вычисленным значением (используя поле формулы).
Описано тут


P.S.
Просто хотелось бы получить информацию (может быть это в описании help где-то описано), можно или нельзя строить графики на основе вычисляемых полей.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36417505
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сталкивался с подобным в версии XII R2: не строятся графики по формулам, содержащим функции частичных итогов типа sum, count,.. Поэтому думаю что это особенность CR иначе они бы ее за несколько лет с 10 версии исправили, хотя свои ошибки они весьма неохотно признают и тем более исправляют. Скорее всего, графики строятся на основе данных на первом проходе, когда еще не доступны частичные итоговые суммы, но это только мое предположение.
Поэтому проблему пришлось решать используя подотчет с запросом к тем же данным что и в основном, но другим уровнем группировки данных.
Если в качестве субд используется MSSQL2005 или старше, то вопрос можно попробовать решить с помощью оконных функций
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36417728
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ustass,
Еще раз проверил на тестовом отчете.
В секции группы расположены два итоговых поля,
одно отображает сумму времени ( sum_time_action ),
второе кол-во выполненных действий ( sum_count_action ).
Для диаграммы отображаются оба итовых поля - все отлично,
но мне нужно построить по среднему значению, то есть по формуле
Код: plaintext
sum_time_action  / sum_count_action

Вот эта формула в диаграмму уже не хочет попадать.......

Как ее создать ? Или это не возможно в CR ?

iNatty писала
тут

как нужно, но я не понял как эту формулу вставить в итоговое поле:

Здесь я так понимаю формула <Итог1>

{@Show_Time_} \ {@summ}


Дальше нужно создать критерий, то есть, еще итоговое поле
<Итог_AVG> , для которого
- поле подведения итога (выбираете из выпадающего списка) Итог1
- тип подводимого итога - min или max (значение единственное, оно и будет)
- для группы Group#1
И вот этот критерий уже и выбирать..
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36419493
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ustass,

Поэтому проблему пришлось решать используя подотчет с запросом к тем же данным что и в основном, но другим уровнем группировки данных.

Можно уточнить как делать запрос к тем же данным что и в основном из subreport.
Имеете ввиду передачу параметров из основного в subreport ?
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36419626
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в версии XII R2: не строятся графики по формулам, содержащим функции частичных итогов типа sum, count,.. С сожалением, соглашусь с этой фразой. Пример писала по памяти - была подобного плана задача по подсчету временых ресурсов и трудозатрат. Нашла ее в старых проектах, увы, условия там чуть другие (удалось решить путем изменения модели расчета - успешные и неуспешные проекты были разделены). В данном случае нужно искать что-то другое.
Вы можете изменять сам запрос SQL и задать его через Command?
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36419826
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVBustass,

Поэтому проблему пришлось решать используя подотчет с запросом к тем же данным что и в основном, но другим уровнем группировки данных.

Можно уточнить как делать запрос к тем же данным что и в основном из subreport.
Имеете ввиду передачу параметров из основного в subreport ?
В основном отчете запрос выглядит как
Код: plaintext
1.
2.
3.
Select A,B,C, sum(d) as D,count (e) as E 
from Table 
where Date between {?d1} and {&d2}
Group by A,B,C
а в подотчете
Код: plaintext
1.
2.
3.
Select A,B, sum(d) as D,count (e) as E ,sum(d) /count (e) as AvgValue
from Table 
where Date between {?d1} and {&d2}
Group by A,B
Значения параметров из основного отчета линкуем к подотчету и строим в футере отчета график.
Если график нужно добавить в кажду группу 2 уровня то запрос в подотчете может быть таким
Код: plaintext
1.
2.
3.
Select A,B, sum(d) as D,count (e) as E ,sum(d) /count (e) as AvgValue
from Table 
where Date between {?d1} and {&d2} and B={?Bval}
Group by A,B
и в каждом гроупфутере 2 уровня вставить подотчет прилинковав значение группы к параметру {?Bval}. Правда результатом такого решения будет большое количество запросов, что сильно замедлит выполнение отчета.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36421044
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если запросы можно менять, то привожу пример для MS SQL Server
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 SELECT o.Пользователь
	, o.[Дата  1 ]
	, o.[Дата  2 ]
	, o.[Признак]
	, cast((select sum(datediff(ss, o1.[Дата  1 ], o1.[Дата  2 ])) 
		from Таблица o1 where o1.[.Пользователь]= o.[.Пользователь]
				 )   as decimal( 15 ,  4 ))/ ( 24  *  3600 ) as sd 
                 -- подсчет сумм разницы во времени (в секундах для точности), значение будет одинаковым для всех строк одного пользователю

	, (select count(*) 
		from Orders o1 where o1.Пользователь]= o.[.Пользователь]
				 and o1.[Признак] =  1 ) as c
                -- подсчет фактов по признаку по этому же пользователю, значение будет одинаковым для всех строк одного пользователю

	, (cast((select sum(datediff(ss, o1.[Дата  1 ], o1.[Дата  2 ])) 
		from Таблица o1 where o1.[.Пользователь]= o.[.Пользователь]
				 )   as decimal( 15 ,  4 ))/ ( 24  *  3600 ))
                   /   	 (select count(o1.[Order ID]) 
		from Таблица o1 where o1.[.Пользователь]= o.[.Пользователь]
				 and o1.[Признак] =  1 ) [color=red]as a[/color]
	-- собственно само деление, значение будет одинаковым для всех строк одного пользователю


FROM   Таблица o
 ORDER BY o.[Пользователь]

В самом отчете создается группа по полю Пользователь и итоговое поле с формулой max(a)
По нему и строится диаграмма, которая располагается выше группы по Пользователю.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36424415
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNatty,
пытаюсь идти по вашим стопам, но

при вставке в такой код:
Код: plaintext
1.
2.
3.
 SELECT o."Create_Date", o."Дата регистрации" , o."Пользователь" ,
( o."Create_Date" - o."Дата регистрации" )  as raznica
FROM  Table o 
 WHERE o."ID_F" =  2  

такого дополнения
Код: plaintext
1.
2.
3.
 ...
,(select  count(*)   FROM  Table o1  where o1."Пользователь" = o."Пользователь"  ) as Counter_
....
после "as raznica"

Выводит "37000 Expected lexical element not found <identifier>"

Через PL\SQL такой код проходит на ура.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36425119
iNatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте уточним, что мы говорим одними терминами :)
1. Добавляем соединение. Тип соединения - Oracle Server. (Сервис, логин, пароль).
2. Add Command. Вставляем запрос (отлаженный в pl/sql).
3. Создаем параметры, добавляем в запрос.

У меня не получается воспроизвести Вашу ошибку.
...
Рейтинг: 0 / 0
CR10. Как построить диаграмму для результата формулы и группы.
    #36426887
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо проблема с драйвером ODBC для ПО с которым я работаю.
Он Oracle таблицы конвертит немного в свой оригинальный формат и потому есть ньюансы.
Ну это как говорится "уже совсем другая история..."
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR10. Как построить диаграмму для результата формулы и группы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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