Просмотр полной версии : при формировании отчета вылетает ошибка
При формировании внешнего отчета вылетает ошибка
http://saveimg.ru/show-image.php?id=dbb18c943b0e4f3deef474a1a08151d9
причем ошибка на нескольких ТС на остальных такой беды не наблюдаю.
сам отчет выглядит так:
http://saveimg.ru/show-image.php?id=75e841c5f798ea4a8da230316561f45c
подскажите где может скрыватся ошибка не соображу что то....
Скорее всего, у Вас где-то свои формулы и N/A не воспринимается, естественно, как число в математическом действии, а проверки на N/A вместо числа у Вас нет.
Есть проверки на ноль, как на n\a делать не знаю.
Есть проверки на ноль, как на n\a делать не знаю.
А в чем разница ???
Да ни в чем впринципе. Просто почему то на ноль делить оно не умеет.
А я не соображу как сделать пропуск строки или значения, если значение некоректное.
Да ни в чем впринципе. Просто почему то на ноль делить оно не умеет.
А я не соображу как сделать пропуск строки или значения, если значение некоректное.
Имею ввиду: в чем разница в скрипте проверки ? Проверять на 0 или на N/A ?
Расчет идет в скрипте (на вкладке Код) с вызовом в ячейке через функцию или в самой ячейке ?
Проверка на 0 в ячейке для примера:
[IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."M1_FUEL"> / <Dataset1."DISTANCE">, 'деление на 0')]
Проверка в самой ячейке у меня.
Там где есть действия в принципе проверка то есть....
Но проверка идет как и увас в примере..... где еще может заползти ошибка пока не найду (
Ну такую же проверку на N/A надо сделать, видимо.
Судя по характеру ошибки. "Строка не может быть приведена к типу дабл."
Присылайте файл отчета - посмотрю. Лично.
знать бы еще вашу почту :) в профиле что то не нашел.
знать бы еще вашу почту в профиле что то не нашел.
шлите на support с пометкой для SK.
Это составной отчет или переделанный отчет "Рейсы" ?
составной
Ценю лаконичный ответ. А дальше ? (из чего состоит ?)
Ценю лаконичный ответ. А дальше ? (из чего состоит ?)
http://saveimg.ru/show-image.php?id=5427c5d45a32e23fac9b0892d177dab1
так будет проще думаю.
Вооот...
А теперь взглянем на Ваши итоговые формулы типа:
[AVG(IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, 'N/A'))]
Получается что ?
Если Dataset1."DISTANCE" меньше или равно 0, то в функцию усреднения AVG в качестве значения подставляется текстовая строка 'N/A'...
И что функция AVG должна с ней поделать ???
тогда либо необходимо дописать пропуск такого значения. либо подставить значение ноль.
Как делать пропуск незнаю :)
тогда либо необходимо дописать пропуск такого значения. либо подставить значение ноль.
Как делать пропуск незнаю :)
Если подставите ноль, то среднее все равно будет считаться не совсем так, как надо.
Ведь по сути делится сумма по строкам на количество строк, а Вам надо, чтобы в количество строк не попали строки, где N/A (или 0) - зависит от задачи.
Решение см.: http://www.fast-report.com/ru/forum/index.php?showtopic=3075
Ну, резюмируя: AVG использовать не получится. Хотя, как пишут в форуме по ссылке выше, было бы удобно, если бы был параметр, задающий признак строк, которые надо пропускать (исключить из подсчета AVG).
В таком случае остается прописать это упрощенными мат действиями.
Добавлено через 51 секунду
попробовать хотя бы.
Добавлено через 10 секунд
или найти другой путь...
В смысле ? На форуме дан исчерпывающий ответ, как заменить AVG.
SUM по нужной колонке и разделить на количество строк за исключением строк с N/A.
не читале еще , только начал, отвлекся на соседнюю тему. Сейчас прочту попробую отпишусь. Спасибо за помошь
[SUM(IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."PARK_CNTR"> / <Dataset1."DISTANCE">, 0)) / COUNT(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
как-то так попробуйте, должно заработать, только проверьте синтаксис, чтобы был правильный и скобочек хватало
Если Dataset1."DISTANCE" меньше или равно 0, то в функцию усреднения AVG в качестве значения подставляется текстовая строка 'N/A'...
Очень правильное замечание.
Несуществующее значение по сути тот же ноль. Можно конечно и оспорить, но попробую так.
Заменил N\a на 0. ошибка пропала.
Добавлено через 53 секунды
[SUM(IIF( > 0, 100* / , 0)) / COUNT(IIF( > 0, 1, 0))]
попробовал... что то непошло... ошибок нет но и поле где стоит формула пустое..
разбираюсь .
Добавлено через 4 минуты
но тогда возникает другая проблема.
если в ячейке стоят 0, то avr в итоге показывает лажу. Сейчас подумаю как еще извратится.
Добавлено через 15 минут
подумал... блин . не получается никак по другому.
буду разбиратся с этой формулой от Storm тогда
Очень правильное замечание.
Несуществующее значение по сути тот же ноль. Можно конечно и оспорить, но попробую так.
Заменил 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
Что скажете ?
подумал... блин . не получается никак по другому.
буду разбиратся с этой формулой от Storm тогда
На форуме было предложено 1-в-1, как предложил Storm.
глова не варит к концу дня вот и весь ответ.
Я проверил AVG и пришел к такому же выводу как и вы.
Только вот неполучается у меня. руки кривые и гоова пустая. Сейчас выдохнцу и еще раз попробую.
На форуме было предложено 1-в-1, как предложил Storm.
форум не читал, а формула элементарно суммирует все "нормальные элементы" и кол-во "нормальных элементов" и делит одно на другое
csistra,
попробуйте вывести отдельно две колонки первая сумма из моей формулы, вторая - кол-во элементов и посмотрите, что где не так
нормальных элементов"
может из-за того что я поменял n\a на пустое место ?
Сегодня попробую.
может из-за того что я поменял n\a на пустое место ?
Сегодня попробую.
что-то я не понял, так вы пробовали ту формулу, что я вам выше привел?
Да пробовал.
Она результатов не дает. Т.е. ошибок не выскакивает и в ячейке где ставлю формулу пустое значение. просто пусто.
csistra,
попробуйте вывести отдельно две колонки первая сумма из моей формулы, вторая - кол-во элементов и посмотрите, что где не так
так пробовали?
[COUNT(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
возвращает пустое значение.
COUNT не должен возвращать пустое значение, если в отчете есть хоть 1 строка.
Правда, здесь должен быть не COUNT, а [SUM(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
Дал же ссылку на форум...
да было бы еще куча времени чтобы во все вникнуть, я блин второй день пытаюсь занятся этим и только сяду как всех распирает блин отвлекать.
Правда, здесь должен быть не COUNT, а [SUM(IIF( > 0, 1, 0))]
правильно говорите Константин, ошибся чуток)), писал "на коленке" так сказать
да было бы еще куча времени чтобы во все вникнуть, я блин второй день пытаюсь занятся этим и только сяду как всех распирает блин отвлекать.
Теперь Вы лучше понимаете: как работают программеры. :ha:
не издевайтесь.
Дополнительно вопрос.
у меня в ячейке считает : [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')]
Тогда в простых ячейках будет не эта формула, а только переменная.
И в итоговой будет тогда все очень понятно
Ничего не понял.
Что считаете-то ? Сумма частных не равна частному сумм.
Как объявить переменную и присвоить ей выражение в виде формулы ?
Добавлено через 9 минут
Есть у вас нормальный мануал на внешние отчеты ?
на сайте, я что не скачаю так не то... может я не то качаю ?
Если речь про мануал по системе программирования собственных шаблонов, то:
http://www.fast-report.com/pbc_download/fr4.6_help_doc_rus.zip
вообще жесть...
начитался теперь еще хуже стало.
Добавлено через 27 минут
Ссылка на список переменных отчета хранится в свойстве TfrxReport.Variables.
Не нашел у себя в отчете такое ... все истыкал :(
Это программное свойство, с которым можно работать через вкладку "Код", а не окошко в редакторе.
объявляю переменную в коде
frxReport1.Script.Variables['My Variable'] := 'test';
соответственно меня посылает подальше с таким синтаксисом, хотя в мане написано именно так. наверное я или не туда пихаю это или вообще .
Добавлено через 4 минуты
Добавлено через 7 минут
все запутался совсем. пойду подумаю.
Обчитался мануалов.
разломал весь шаблон.
Начал все переделывать. Возник еще один вопрос не нашел в манах пока что.
Как вывести отдельной ячейкой значение задаваемого периода отчета.
Т.е. если я выбилраю отчет с 1 марта по 10 марта. Чтобы отображалось в ячейке
1.03-10.03 ?
Подскажите плз кто знает.
frxReport1.Script.Variables['My Variable'] := 'test';
я так понимаю, что вы прочитали не то руководство, читайте руководство пользователя, там по шаблонам все подробно расписано
Как вывести отдельной ячейкой значение задаваемого периода отчета.
в "Руководство по работе с программой.doc" написано об этом
Всегда доступные поля: StartTime – Начальное время периода, за которое формируется отчет
EndTime – Конечное время периода, за которое формируется отчет
выводятся просто в квадратных скобках, пример: [StartTime] вывод начала периода
Нашел наконец то как объявить переменную.
С выводом даты тоже разобрался, но почемуто при выражении [StarTime] [EndTime]
start выводит значение формата дд.мм.гг. чч.мм а EndTime выводит значение формата дд.мм.гг.
не нашел пока еще как выводить только даты.
start выводит значение формата дд.мм.гг. чч.мм а EndTime выводит значение формата дд.мм.гг.
они выводят в одинаковом формате, возможно у вас ячейка недостаточной ширины для того, чтобы влезло время
не нашел пока еще как выводить только даты.
самый простой метод, это обрезать все лишнее [Copy(<StartTime>,1,8)]
Спасибо помогло. Ковыряюсь дальше .
http://saveimg.ru/show-image.php?id=fa1cb47e80ca96d8fe9a569bc0ef23de
Вот такая беда у меня получилась.
Линия выделяет каждую вторую строку. В результате она почему то рвет данные. Никак не найду как поправить. Подскажите плз если знаете.
Добавлено через 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')
а не цифровое значение.
Что я не так сделал ?
как вы присваиваете это значение? скорее всего вы в виде строки значение передаете, поэтому переменная и возвращает строку, а не результат вычисления, в общем шаблон нужно глядеть
http://saveimg.ru/show-image.php?id=ce1ca565f1d5d082468419609c695e3d
http://saveimg.ru/show-image.php?id=2e8a2e7a752e809d228f6990b9c6b727
http://saveimg.ru/show-image.php?id=960234a3976508ea43a3c529319547a2
Вот скрины. Как задаю переменную, что пишу в ячейке, что получается.
Если надо пришлю шаблон. напишите адрес.
лучше задавайте выражение для этой переменной во вкладке КОД
или попробуйте поставить в квадратных скобках выражение для переменной
http://saveimg.ru/show-image.php?id=e09531386e73cd7c389ff82c173a75ad
прописал... но видимо неправильно. ...
почитайте внимательно руководство пользователя FastReports - там есть раздел про глобальные переменные и как с ними работать
Не нашел ничего про глобальные переменные....
Зато вот ошибка появилась.
В закладке код ничего не менял.
http://saveimg.ru/show-image.php?id=c0ef84588a598fdb696369ce881e9940
Не нашел ничего про глобальные переменные....
Руководство пользователя - раздел "Скрипт" - пункт "Обращение к переменным из списка переменных отчета"
Вроде разобрался..... Спасибо.
Скорее всего шаблон из которого я начал делать отчет сильно перекручен.
Ибо при внесении любых изменений в код, начинает глючить насмерть все.
Я создал новый, туда форму скопировал, прописал переменную и начало работать.
Только вот все расползается в форме. Буду собирать в кучу.
Подскажите плз еще один момент.
Значение выражения больше 100.
Как при сумировании ячеек при получении среднего значения ограничить отбор в сумму >0 <100 . Я вот не соображу ...
Зачем это нужно. Если фильтры настроены неправильно, в сутки у тс получается куча фиксаций остановок (тс в боксе стоит). Из-за этого в отчет выходит цифра 2000 например. И соответственно среднее число остановок на 1 тс получается бредовая цифра...
точно также добавить проверку, как это делалось для нулевых значений
Cделал...немного через одно место но сделал.
Псб. Все отчет наконец то заработал как я хочу. Осталось проверить все ли я правильно сделал...
Пока вспомнил.
А можно сделать чтобы при формировании 1 отчета получалось сразу несколько отчетов на несколько страниц ?
Сильно это сложно ?
А можно сделать чтобы при формировании 1 отчета получалось сразу несколько отчетов на несколько страниц ?
вопрос нуждаеца в пояснении
Хорошо.
Начинаю формировать 1 составной отчет. название не имеет значения.
После формирования у меня в окне просмотра получается не один отчет а сразу два, или три. Например отчет рейсы и следом тут же отчет о топливе.
для этого и сделаны составные отчеты, то есть в одном отчете вы можете вывести любой набор данных по простым отчетам
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot