![]() |
при формировании отчета вылетает ошибка
При формировании внешнего отчета вылетает ошибка
http://saveimg.ru/show-image.php?id=...f474a1a08151d9 причем ошибка на нескольких ТС на остальных такой беды не наблюдаю. сам отчет выглядит так: http://saveimg.ru/show-image.php?id=...a230316561f45c подскажите где может скрыватся ошибка не соображу что то.... |
Скорее всего, у Вас где-то свои формулы и N/A не воспринимается, естественно, как число в математическом действии, а проверки на N/A вместо числа у Вас нет.
|
Есть проверки на ноль, как на n\a делать не знаю.
|
Цитата:
|
Да ни в чем впринципе. Просто почему то на ноль делить оно не умеет.
А я не соображу как сделать пропуск строки или значения, если значение некоректное. |
Цитата:
Расчет идет в скрипте (на вкладке Код) с вызовом в ячейке через функцию или в самой ячейке ? Проверка на 0 в ячейке для примера: [IIF(<Dataset1."DISTANCE"> > 0, 100*<Dataset1."M1_FUEL"> / <Dataset1."DISTANCE">, 'деление на 0')] |
Проверка в самой ячейке у меня.
Там где есть действия в принципе проверка то есть.... Но проверка идет как и увас в примере..... где еще может заползти ошибка пока не найду ( |
Ну такую же проверку на N/A надо сделать, видимо.
Судя по характеру ошибки. "Строка не может быть приведена к типу дабл." Присылайте файл отчета - посмотрю. Лично. |
знать бы еще вашу почту :) в профиле что то не нашел.
|
Цитата:
|
Ок ушло.
|
Это составной отчет или переделанный отчет "Рейсы" ?
|
составной
|
Цитата:
|
Цитата:
так будет проще думаю. |
Вооот...
А теперь взглянем на Ваши итоговые формулы типа: [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/...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))]
как-то так попробуйте, должно заработать, только проверьте синтаксис, чтобы был правильный и скобочек хватало |
Цитата:
Несуществующее значение по сути тот же ноль. Можно конечно и оспорить, но попробую так. Заменил N\a на 0. ошибка пропала. Добавлено через 53 секунды Цитата:
разбираюсь . Добавлено через 4 минуты но тогда возникает другая проблема. если в ячейке стоят 0, то avr в итоге показывает лажу. Сейчас подумаю как еще извратится. Добавлено через 15 минут подумал... блин . не получается никак по другому. буду разбиратся с этой формулой от Storm тогда |
Цитата:
Вы всего лишь устранили причину вылета с ошибкой, но то ли Вы получили, что должно быть ? Смотрите: 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 Что скажете ? |
Цитата:
|
глова не варит к концу дня вот и весь ответ.
Я проверил AVG и пришел к такому же выводу как и вы. Только вот неполучается у меня. руки кривые и гоова пустая. Сейчас выдохнцу и еще раз попробую. |
Цитата:
csistra, попробуйте вывести отдельно две колонки первая сумма из моей формулы, вторая - кол-во элементов и посмотрите, что где не так |
Цитата:
Сегодня попробую. |
Цитата:
|
Да пробовал.
Она результатов не дает. Т.е. ошибок не выскакивает и в ячейке где ставлю формулу пустое значение. просто пусто. |
Цитата:
|
[COUNT(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))]
возвращает пустое значение. |
COUNT не должен возвращать пустое значение, если в отчете есть хоть 1 строка.
Правда, здесь должен быть не COUNT, а [SUM(IIF(<Dataset1."DISTANCE"> > 0, 1, 0))] Дал же ссылку на форум... |
да было бы еще куча времени чтобы во все вникнуть, я блин второй день пытаюсь занятся этим и только сяду как всех распирает блин отвлекать.
|
Цитата:
|
Цитата:
|
не издевайтесь.
Дополнительно вопрос. у меня в ячейке считает : [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 минут Есть у вас нормальный мануал на внешние отчеты ? на сайте, я что не скачаю так не то... может я не то качаю ? |
Если речь про мануал по системе программирования собственных шаблонов, то:
|
вообще жесть...
начитался теперь еще хуже стало. Добавлено через 27 минут Ссылка на список переменных отчета хранится в свойстве TfrxReport.Variables. Не нашел у себя в отчете такое ... все истыкал :( |
Это программное свойство, с которым можно работать через вкладку "Код", а не окошко в редакторе.
|
объявляю переменную в коде
frxReport1.Script.Variables['My Variable'] := 'test'; соответственно меня посылает подальше с таким синтаксисом, хотя в мане написано именно так. наверное я или не туда пихаю это или вообще . Добавлено через 4 минуты Добавлено через 7 минут все запутался совсем. пойду подумаю. |
Обчитался мануалов.
разломал весь шаблон. Начал все переделывать. Возник еще один вопрос не нашел в манах пока что. Как вывести отдельной ячейкой значение задаваемого периода отчета. Т.е. если я выбилраю отчет с 1 марта по 10 марта. Чтобы отображалось в ячейке 1.03-10.03 ? Подскажите плз кто знает. |
Цитата:
Цитата:
Цитата:
|
Нашел наконец то как объявить переменную.
С выводом даты тоже разобрался, но почемуто при выражении [StarTime] [EndTime] start выводит значение формата дд.мм.гг. чч.мм а EndTime выводит значение формата дд.мм.гг. не нашел пока еще как выводить только даты. |
Цитата:
Цитата:
|
Спасибо помогло. Ковыряюсь дальше .
|
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') а не цифровое значение. Что я не так сделал ? |
как вы присваиваете это значение? скорее всего вы в виде строки значение передаете, поэтому переменная и возвращает строку, а не результат вычисления, в общем шаблон нужно глядеть
|
http://saveimg.ru/show-image.php?id=...8419609c695e3d
http://saveimg.ru/show-image.php?id=...8f6990b9c6b727 http://saveimg.ru/show-image.php?id=...a3c529319547a2 Вот скрины. Как задаю переменную, что пишу в ячейке, что получается. Если надо пришлю шаблон. напишите адрес. |
лучше задавайте выражение для этой переменной во вкладке КОД
или попробуйте поставить в квадратных скобках выражение для переменной |
http://saveimg.ru/show-image.php?id=...9ff82c173a75ad
прописал... но видимо неправильно. ... |
почитайте внимательно руководство пользователя FastReports - там есть раздел про глобальные переменные и как с ними работать
|
Не нашел ничего про глобальные переменные....
Зато вот ошибка появилась. В закладке код ничего не менял. http://saveimg.ru/show-image.php?id=...6369ce881e9940 |
Цитата:
|
Вроде разобрался..... Спасибо.
Скорее всего шаблон из которого я начал делать отчет сильно перекручен. Ибо при внесении любых изменений в код, начинает глючить насмерть все. Я создал новый, туда форму скопировал, прописал переменную и начало работать. Только вот все расползается в форме. Буду собирать в кучу. |
Подскажите плз еще один момент.
Значение выражения больше 100. Как при сумировании ячеек при получении среднего значения ограничить отбор в сумму >0 <100 . Я вот не соображу ... Зачем это нужно. Если фильтры настроены неправильно, в сутки у тс получается куча фиксаций остановок (тс в боксе стоит). Из-за этого в отчет выходит цифра 2000 например. И соответственно среднее число остановок на 1 тс получается бредовая цифра... |
точно также добавить проверку, как это делалось для нулевых значений
|
Cделал...немного через одно место но сделал.
Псб. Все отчет наконец то заработал как я хочу. Осталось проверить все ли я правильно сделал... Пока вспомнил. А можно сделать чтобы при формировании 1 отчета получалось сразу несколько отчетов на несколько страниц ? Сильно это сложно ? |
Цитата:
|
Хорошо.
Начинаю формировать 1 составной отчет. название не имеет значения. После формирования у меня в окне просмотра получается не один отчет а сразу два, или три. Например отчет рейсы и следом тут же отчет о топливе. |
для этого и сделаны составные отчеты, то есть в одном отчете вы можете вывести любой набор данных по простым отчетам
|
Текущее время: 03:13. Часовой пояс GMT. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot