ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (https://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (https://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   при формировании отчета вылетает ошибка (https://forum.tk-chel.ru/showthread.php?t=1671)

csistra 27.02.2012 12:20

при формировании отчета вылетает ошибка
 
При формировании внешнего отчета вылетает ошибка
http://saveimg.ru/show-image.php?id=...f474a1a08151d9
причем ошибка на нескольких ТС на остальных такой беды не наблюдаю.
сам отчет выглядит так:
http://saveimg.ru/show-image.php?id=...a230316561f45c
подскажите где может скрыватся ошибка не соображу что то....

SK 27.02.2012 13:58

Скорее всего, у Вас где-то свои формулы и N/A не воспринимается, естественно, как число в математическом действии, а проверки на N/A вместо числа у Вас нет.

csistra 27.02.2012 13:59

Есть проверки на ноль, как на n\a делать не знаю.

SK 27.02.2012 15:06

Цитата:

Сообщение от csistra (Сообщение 25469)
Есть проверки на ноль, как на n\a делать не знаю.

А в чем разница ???

csistra 28.02.2012 08:08

Да ни в чем впринципе. Просто почему то на ноль делить оно не умеет.
А я не соображу как сделать пропуск строки или значения, если значение некоректное.

SK 28.02.2012 08:56

Цитата:

Сообщение от csistra (Сообщение 25555)
Да ни в чем впринципе. Просто почему то на ноль делить оно не умеет.
А я не соображу как сделать пропуск строки или значения, если значение некоректное.

Имею ввиду: в чем разница в скрипте проверки ? Проверять на 0 или на N/A ?
Расчет идет в скрипте (на вкладке Код) с вызовом в ячейке через функцию или в самой ячейке ?

Проверка на 0 в ячейке для примера:
[IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."M1_FUEL"> / <Dataset1."DISTANCE">, 'деление на 0')]

csistra 28.02.2012 11:25

Проверка в самой ячейке у меня.
Там где есть действия в принципе проверка то есть....
Но проверка идет как и увас в примере..... где еще может заползти ошибка пока не найду (

SK 28.02.2012 13:54

Ну такую же проверку на N/A надо сделать, видимо.
Судя по характеру ошибки. "Строка не может быть приведена к типу дабл."

Присылайте файл отчета - посмотрю. Лично.

csistra 29.02.2012 07:25

знать бы еще вашу почту :) в профиле что то не нашел.

Phantom 29.02.2012 07:37

Цитата:

Сообщение от csistra (Сообщение 25687)
знать бы еще вашу почту в профиле что то не нашел.

шлите на support с пометкой для SK.

csistra 29.02.2012 09:03

Ок ушло.

SK 29.02.2012 09:50

Это составной отчет или переделанный отчет "Рейсы" ?

csistra 29.02.2012 13:45

составной

SK 29.02.2012 13:47

Цитата:

Сообщение от csistra (Сообщение 25731)
составной

Ценю лаконичный ответ. А дальше ? (из чего состоит ?)

csistra 01.03.2012 09:39

Цитата:

Сообщение от SK (Сообщение 25732)
Ценю лаконичный ответ. А дальше ? (из чего состоит ?)

http://saveimg.ru/show-image.php?id=...9b0892d177dab1
так будет проще думаю.

SK 01.03.2012 15:03

Вооот...

А теперь взглянем на Ваши итоговые формулы типа:

[AVG(IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, 'N/A'))]

Получается что ?
Если Dataset1."DISTANCE" меньше или равно 0, то в функцию усреднения AVG в качестве значения подставляется текстовая строка 'N/A'...
И что функция AVG должна с ней поделать ???

csistra 01.03.2012 16:20

тогда либо необходимо дописать пропуск такого значения. либо подставить значение ноль.
Как делать пропуск незнаю :)

SK 01.03.2012 16:47

Цитата:

Сообщение от csistra (Сообщение 25847)
тогда либо необходимо дописать пропуск такого значения. либо подставить значение ноль.
Как делать пропуск незнаю :)

Если подставите ноль, то среднее все равно будет считаться не совсем так, как надо.
Ведь по сути делится сумма по строкам на количество строк, а Вам надо, чтобы в количество строк не попали строки, где N/A (или 0) - зависит от задачи.

Решение см.: http://www.fast-report.com/ru/forum/...showtopic=3075

csistra 02.03.2012 07:25

Ок спс ушел читать.

SK 02.03.2012 07:55

Ну, резюмируя: AVG использовать не получится. Хотя, как пишут в форуме по ссылке выше, было бы удобно, если бы был параметр, задающий признак строк, которые надо пропускать (исключить из подсчета AVG).

csistra 02.03.2012 08:56

В таком случае остается прописать это упрощенными мат действиями.

Добавлено через 51 секунду
попробовать хотя бы.

Добавлено через 10 секунд
или найти другой путь...

SK 02.03.2012 09:18

В смысле ? На форуме дан исчерпывающий ответ, как заменить AVG.
SUM по нужной колонке и разделить на количество строк за исключением строк с N/A.

csistra 02.03.2012 09:21

не читале еще , только начал, отвлекся на соседнюю тему. Сейчас прочту попробую отпишусь. Спасибо за помошь

storm 02.03.2012 11:13

[SUM(IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, 0)) / COUNT(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
как-то так попробуйте, должно заработать, только проверьте синтаксис, чтобы был правильный и скобочек хватало

csistra 02.03.2012 12:49

Цитата:

Сообщение от SK (Сообщение 25836)
Если Dataset1."DISTANCE" меньше или равно 0, то в функцию усреднения AVG в качестве значения подставляется текстовая строка 'N/A'...

Очень правильное замечание.
Несуществующее значение по сути тот же ноль. Можно конечно и оспорить, но попробую так.
Заменил N\a на 0. ошибка пропала.

Добавлено через 53 секунды
Цитата:

Сообщение от storm (Сообщение 25970)
[SUM(IIF( > 0, 100* / , 0)) / COUNT(IIF( > 0, 1, 0))]

попробовал... что то непошло... ошибок нет но и поле где стоит формула пустое..
разбираюсь .

Добавлено через 4 минуты
но тогда возникает другая проблема.
если в ячейке стоят 0, то avr в итоге показывает лажу. Сейчас подумаю как еще извратится.

Добавлено через 15 минут
подумал... блин . не получается никак по другому.
буду разбиратся с этой формулой от Storm тогда

SK 02.03.2012 13:27

Цитата:

Сообщение от csistra (Сообщение 25979)
Очень правильное замечание.
Несуществующее значение по сути тот же ноль. Можно конечно и оспорить, но попробую так.
Заменил N\a на 0. ошибка пропала.

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

Смотрите: AVG делит сумму по столбцу на количество строк.

Допустим, имеем таблицу:
1. N/A (0)
2. 200
3. 150
4. N/A (0)
5. N/A (0)
6. N/A (0)
7. 50
8. N/A (0)
9. 100
10. N/A (0)

По логике работы AVG с превращением N/A в 0:
Среднее = (0+200+150+0+0+0+50+0+100+0)/10=500/10=50

По логике исключения N/A:
Среднее = (200+150+50+100)/4=500/4=125

Что скажете ?

SK 02.03.2012 13:30

Цитата:

Сообщение от csistra (Сообщение 25979)
подумал... блин . не получается никак по другому.
буду разбиратся с этой формулой от Storm тогда

На форуме было предложено 1-в-1, как предложил Storm.

csistra 02.03.2012 14:34

глова не варит к концу дня вот и весь ответ.
Я проверил AVG и пришел к такому же выводу как и вы.
Только вот неполучается у меня. руки кривые и гоова пустая. Сейчас выдохнцу и еще раз попробую.

storm 05.03.2012 05:08

Цитата:

Сообщение от SK (Сообщение 25989)
На форуме было предложено 1-в-1, как предложил Storm.

форум не читал, а формула элементарно суммирует все "нормальные элементы" и кол-во "нормальных элементов" и делит одно на другое

csistra,
попробуйте вывести отдельно две колонки первая сумма из моей формулы, вторая - кол-во элементов и посмотрите, что где не так

csistra 05.03.2012 06:26

Цитата:

Сообщение от storm (Сообщение 26050)
нормальных элементов"

может из-за того что я поменял n\a на пустое место ?
Сегодня попробую.

storm 05.03.2012 06:40

Цитата:

Сообщение от csistra (Сообщение 26057)
может из-за того что я поменял n\a на пустое место ?
Сегодня попробую.

что-то я не понял, так вы пробовали ту формулу, что я вам выше привел?

csistra 06.03.2012 06:38

Да пробовал.
Она результатов не дает. Т.е. ошибок не выскакивает и в ячейке где ставлю формулу пустое значение. просто пусто.

storm 06.03.2012 06:40

Цитата:

Сообщение от storm (Сообщение 26050)
csistra,
попробуйте вывести отдельно две колонки первая сумма из моей формулы, вторая - кол-во элементов и посмотрите, что где не так

так пробовали?

csistra 06.03.2012 13:11

[COUNT(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
возвращает пустое значение.

SK 06.03.2012 14:02

COUNT не должен возвращать пустое значение, если в отчете есть хоть 1 строка.

Правда, здесь должен быть не COUNT, а [SUM(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
Дал же ссылку на форум...

csistra 06.03.2012 14:47

да было бы еще куча времени чтобы во все вникнуть, я блин второй день пытаюсь занятся этим и только сяду как всех распирает блин отвлекать.

storm 07.03.2012 04:15

Цитата:

Сообщение от SK (Сообщение 26170)
Правда, здесь должен быть не COUNT, а [SUM(IIF( > 0, 1, 0))]

правильно говорите Константин, ошибся чуток)), писал "на коленке" так сказать

SK 07.03.2012 06:09

Цитата:

Сообщение от csistra (Сообщение 26178)
да было бы еще куча времени чтобы во все вникнуть, я блин второй день пытаюсь занятся этим и только сяду как всех распирает блин отвлекать.

Теперь Вы лучше понимаете: как работают программеры. :ha:

csistra 07.03.2012 08:26

не издевайтесь.
Дополнительно вопрос.
у меня в ячейке считает : [IIF(<Dataset1."M1_P_HOURS"> >0 , <Dataset1."M1_FUEL_PRK"> / <Dataset1."M1_P_HOURS">, '0')]
В итоговой было:
[(SUM(<Dataset1."M1_FUEL_PRK">) / SUM( <Dataset1."M1_P_HOURS">))]
по формуле что вы посоветовали я накалякал:
[IIF(SUM(IIF(<Dataset1."M1_FUEL_PRK"> >0,1,0),0 ) <0 ,0,SUM(<Dataset1."M1_FUEL_PRK">/<Dataset1."M1_P_HOURS">) / SUM(IIF(<Dataset1."M1_P_HOURS"> >0,1,0), 0))]
Слишком уж много всего получается в итоговой строке для простого мат действия.
Возможно объявить переменную для значения :
[IIF(<Dataset1."M1_P_HOURS"> >0 , <Dataset1."M1_FUEL_PRK"> / <Dataset1."M1_P_HOURS">, '0')]
Тогда в простых ячейках будет не эта формула, а только переменная.
И в итоговой будет тогда все очень понятно

SK 07.03.2012 08:52

Ничего не понял.
Что считаете-то ? Сумма частных не равна частному сумм.

csistra 07.03.2012 09:19

Как объявить переменную и присвоить ей выражение в виде формулы ?

Добавлено через 9 минут
Есть у вас нормальный мануал на внешние отчеты ?
на сайте, я что не скачаю так не то... может я не то качаю ?

SK 07.03.2012 09:31

Если речь про мануал по системе программирования собственных шаблонов, то:


csistra 07.03.2012 10:36

вообще жесть...
начитался теперь еще хуже стало.

Добавлено через 27 минут
Ссылка на список переменных отчета хранится в свойстве TfrxReport.Variables.
Не нашел у себя в отчете такое ... все истыкал :(

SK 07.03.2012 10:46

Это программное свойство, с которым можно работать через вкладку "Код", а не окошко в редакторе.

csistra 07.03.2012 11:04

объявляю переменную в коде
frxReport1.Script.Variables['My Variable'] := 'test';
соответственно меня посылает подальше с таким синтаксисом, хотя в мане написано именно так. наверное я или не туда пихаю это или вообще .


Добавлено через 4 минуты


Добавлено через 7 минут
все запутался совсем. пойду подумаю.

csistra 11.03.2012 07:08

Обчитался мануалов.
разломал весь шаблон.
Начал все переделывать. Возник еще один вопрос не нашел в манах пока что.
Как вывести отдельной ячейкой значение задаваемого периода отчета.
Т.е. если я выбилраю отчет с 1 марта по 10 марта. Чтобы отображалось в ячейке
1.03-10.03 ?
Подскажите плз кто знает.

storm 11.03.2012 07:39

Цитата:

Сообщение от csistra (Сообщение 26233)
frxReport1.Script.Variables['My Variable'] := 'test';

я так понимаю, что вы прочитали не то руководство, читайте руководство пользователя, там по шаблонам все подробно расписано

Цитата:

Сообщение от csistra (Сообщение 26298)
Как вывести отдельной ячейкой значение задаваемого периода отчета.

в "Руководство по работе с программой.doc" написано об этом
Цитата:

Всегда доступные поля: StartTime – Начальное время периода, за которое формируется отчет
EndTime – Конечное время периода, за которое формируется отчет
выводятся просто в квадратных скобках, пример: [StartTime] вывод начала периода

csistra 12.03.2012 06:12

Нашел наконец то как объявить переменную.
С выводом даты тоже разобрался, но почемуто при выражении [StarTime] [EndTime]
start выводит значение формата дд.мм.гг. чч.мм а EndTime выводит значение формата дд.мм.гг.
не нашел пока еще как выводить только даты.

storm 12.03.2012 06:32

Цитата:

Сообщение от csistra (Сообщение 26355)
start выводит значение формата дд.мм.гг. чч.мм а EndTime выводит значение формата дд.мм.гг.

они выводят в одинаковом формате, возможно у вас ячейка недостаточной ширины для того, чтобы влезло время

Цитата:

Сообщение от csistra (Сообщение 26355)
не нашел пока еще как выводить только даты.

самый простой метод, это обрезать все лишнее [Copy(<StartTime>,1,8)]

csistra 12.03.2012 12:46

Спасибо помогло. Ковыряюсь дальше .

csistra 13.03.2012 08:08

http://saveimg.ru/show-image.php?id=...9a569bc0ef23de
Вот такая беда у меня получилась.
Линия выделяет каждую вторую строку. В результате она почему то рвет данные. Никак не найду как поправить. Подскажите плз если знаете.

Добавлено через 1 минуту
затупил.. надо было линию на задний план поставить и все.

Добавлено через 28 минут
Еще один момент никак не победю.
Объявляю переменную называю её ost_na_100
Выражение переменной
IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, '0')
В отчете в ячейке пишу :
[ost_na_100]
в результате вместо значения при формированиии появляется:
IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, '0')
а не цифровое значение.
Что я не так сделал ?

storm 13.03.2012 08:55

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

csistra 13.03.2012 09:21

http://saveimg.ru/show-image.php?id=...8419609c695e3d
http://saveimg.ru/show-image.php?id=...8f6990b9c6b727
http://saveimg.ru/show-image.php?id=...a3c529319547a2
Вот скрины. Как задаю переменную, что пишу в ячейке, что получается.
Если надо пришлю шаблон. напишите адрес.

storm 13.03.2012 09:27

лучше задавайте выражение для этой переменной во вкладке КОД
или попробуйте поставить в квадратных скобках выражение для переменной

csistra 13.03.2012 09:40

http://saveimg.ru/show-image.php?id=...9ff82c173a75ad
прописал... но видимо неправильно. ...

storm 13.03.2012 10:06

почитайте внимательно руководство пользователя FastReports - там есть раздел про глобальные переменные и как с ними работать

csistra 13.03.2012 10:38

Не нашел ничего про глобальные переменные....
Зато вот ошибка появилась.
В закладке код ничего не менял.
http://saveimg.ru/show-image.php?id=...6369ce881e9940

storm 13.03.2012 10:59

Цитата:

Сообщение от csistra (Сообщение 26453)
Не нашел ничего про глобальные переменные....

Руководство пользователя - раздел "Скрипт" - пункт "Обращение к переменным из списка переменных отчета"

csistra 14.03.2012 06:13

Вроде разобрался..... Спасибо.
Скорее всего шаблон из которого я начал делать отчет сильно перекручен.
Ибо при внесении любых изменений в код, начинает глючить насмерть все.
Я создал новый, туда форму скопировал, прописал переменную и начало работать.
Только вот все расползается в форме. Буду собирать в кучу.

csistra 15.03.2012 07:27

Подскажите плз еще один момент.
Значение выражения больше 100.
Как при сумировании ячеек при получении среднего значения ограничить отбор в сумму >0 <100 . Я вот не соображу ...
Зачем это нужно. Если фильтры настроены неправильно, в сутки у тс получается куча фиксаций остановок (тс в боксе стоит). Из-за этого в отчет выходит цифра 2000 например. И соответственно среднее число остановок на 1 тс получается бредовая цифра...

storm 15.03.2012 07:51

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

csistra 15.03.2012 12:47

Cделал...немного через одно место но сделал.
Псб. Все отчет наконец то заработал как я хочу. Осталось проверить все ли я правильно сделал...
Пока вспомнил.
А можно сделать чтобы при формировании 1 отчета получалось сразу несколько отчетов на несколько страниц ?
Сильно это сложно ?

storm 15.03.2012 12:58

Цитата:

Сообщение от csistra (Сообщение 26629)
А можно сделать чтобы при формировании 1 отчета получалось сразу несколько отчетов на несколько страниц ?

вопрос нуждаеца в пояснении

csistra 16.03.2012 08:19

Хорошо.
Начинаю формировать 1 составной отчет. название не имеет значения.
После формирования у меня в окне просмотра получается не один отчет а сразу два, или три. Например отчет рейсы и следом тут же отчет о топливе.

storm 16.03.2012 09:16

для этого и сделаны составные отчеты, то есть в одном отчете вы можете вывести любой набор данных по простым отчетам


Текущее время: 03:13. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot