:: Visual Foxpro, Foxpro for DOS
Отчёт, сумма по столбцу
Andrey_book

Сообщений: 102
Дата регистрации: 10.12.2015
Как в отчёте вывести сумму по столбцу?
вроде просто, а не получается.


По идеи так
в Summary
sum(szpz07.lkid)
Ошибка:" файл sum.prg не существует"
или так

sum(szpz07.lkid)
Ошибка: "Переменная lkid не найдена"
___________
И ещё как вывести сумму по столбцу -> КОТОРЫЙ тоже вычисляется в зависимости от данных в строке?
у поля не нашёл не имени не переменной, как обратиться?


------------------
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
sphinx

Сообщений: 31188
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
В отчете делается просто:
- вводится переменная, обнуляется в шапке отчета.
- указывается, область действия переменной (группа или весь отчет), указывается выражение (сумма, среднее и т.д.), указывается поле.
- В нужных местах отчета (подвал группы, подвал отчета) выводится не поле таблицы, а переменная...


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Andrey_book
Как в отчёте вывести сумму по столбцу?
вроде просто, а не получается.

В отчете есть свои собственные встроенные средства для суммирования, вычисления среднего и пр. Т.е. нет необходимости использовать суммирование какими-то иными функциями.
Для этого вся структура рипорта разбита на так называемые "бэнды". Если кликнуть правой кнопкой и выбрать Properties, там как раз в разделе Optional Bands можно включить как общий титул всего отчета, так и общую суммарную строку всего отчета.
При этом под нужным полем всего лишь помещаем такое же поле, и в его свойствах указываем в закладке Calculate в комбо Calculation type - например Sum для суммирования. Также чуть ниже в комбо для выбора пределов суммирования выбираем - либо для всего рипорта, итоговая сумма, либо сумма только на текущей странице, либо, обычно чаще используемая сумма по группе.
Но для последней нужно сначала создать группу. Т.е. проиндексировать таблицу так, чтобы вышла разбивка на группы, и далее в свойствах рипорта в закладке Data grupping указать поле или выражение для группировки. В результате в рипорте возникнут поля заголовка и подвала для данной группы. В которых можно ставить наименование и итоги по данной группе, аналогично в свойствах указав суммирование уже по группе.
Разбивка на группы не отменяет и возможности общей строки по всем группам. Т.е. опять же в свойствах поля, помещенного в бэнд Summary указывается. что это сумма по всему рипорту.

Собственно все это можно найти в описаниях. И все это существует еще с FPD версии.
Для VFP9 же есть и уже намного более мощные возможности с использованием специально разработанного класса ReportListener. Делающие фоксовый отчет уже намного более настраиваемым.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 2 раз(а). Последнее : Crispy, 03.04.16 00:20
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
А ежели захочется сделать "отчет своей мечты", то лучше всего сделать его "ручками". Опосля этого уже никаким генератором не захочется пользоваться. \m/ [sm128]

P.S. Впрочем, это совет из серии "вредные советы". Да и шериф наругает - скажет, что "неча хвастаться незнанием инструментария"... :-[
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Andrey_book

Сообщений: 102
Дата регистрации: 10.12.2015
Спасибо, получается)

Только с присвоением полю переменной не могу разобраться.

Предварительно ввёл переменную "p"

Есть вычисляемое поле с таким выражением
iif (!empty(sdet2015.Dgr5),5,iif (!empty(sdet2015.Dgr4),4,iif (!empty(sdet2015.Dgr3),3,iif (!empty(sdet2015.Dgr2),2,iif (!empty(sdet2015.Dgr1),1,0)))))

Если делаю так
p=(iif (!empty(sdet2015.Dgr5),5,iif (!empty(sdet2015.Dgr4),4,iif (!empty(sdet2015.Dgr3),3,iif (!empty(sdet2015.Dgr2),2,iif (!empty(sdet2015.Dgr1),1,0))))))
То на месте этого поля выдаёт .F.

Так же в свойствах>advanced пытался сделать, но значение не меняется.
______________________________________________
Решил это, присвоив значению переменной
iif (!empty(sdet2015.Dgr5),5,iif (!empty(sdet2015.Dgr4),4,iif (!empty(sdet2015.Dgr3),3,iif (!empty(sdet2015.Dgr2),2,iif (!empty(sdet2015.Dgr1),1,0)))))

Потом создал поле и вывел эту переменную
_____________________________________

Но всётки интересно может можно значение поля переменной присвоить? а не наоборот


------------------
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Если под ловом "поле" подразумевается поле отчета для вывода какого-то значения, ему не присвоить и не надо присваивать ничего. Это не хранилище значения, а средство вывода значения выражения в отчет.
Andrey_book
Если делаю так
p=(iif (!empty(sdet2015.Dgr5),5,iif (!empty(sdet2015.Dgr4),4,iif (!empty(sdet2015.Dgr3),3,iif (!empty(sdet2015.Dgr2),2,iif (!empty(sdet2015.Dgr1),1,0))))))
То на месте этого поля выдаёт .F.
Разумеется. Ибо это результат сравнения переменной p и длинного выражения в скобах после знака "=". Вы вообще не различаете выражения и команды?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Что особенно интересно, что ЭТОМУ автору, целую поэму про IIF и ICase написали.
Стоит ли стараться, коли в воду все?
Andrey_book
iif (!empty(sdet2015.Dgr5),5,iif (!empty(sdet2015.Dgr4),4,iif (!empty(sdet2015.Dgr3),3,iif (!empty(sdet2015.Dgr2),2,iif (!empty(sdet2015.Dgr1),1,0)))))


------------------
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Аспид
Стоит ли стараться, коли в воду все?

почему в воду ))) порешали же что кому как удобней/привычней - здесь как раз дело привычки по всей видимости
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Andrey_book

Сообщений: 102
Дата регистрации: 10.12.2015
Всем спасибо!


------------------
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
PavlikPavlikovich

Сообщений: 171
Дата регистрации: 21.07.2010
Всем добрый день!
Подскажите пожалуйста, что делать если надо суммировать не все строки группы. А выполняющие определенное условие.?

В Calculate у меня стоит SUM
В GENERAL round(cena*kolichestvo,2) хотел добавить for priznak=1
Но фокс ругается
Хотел добавить еще один group footer по полю priznak.
Но так не канает. Сортировка стоит по дате, а призаки вперемешку в группе чередуются. Да и не подходит мне так.

Пробовал писать iif(priznak=1,round(cena*kolichestvo,2),)
Работает как-то на половину. Калькулирует, но не верно.



Исправлено 1 раз(а). Последнее : PavlikPavlikovich, 17.04.20 14:26
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
of63
Автор

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Что значит "калькулирует не верно"? IIF(условие, сумма, 0) - нормальная конструкция внутри детайла или в футере группы (хоть под SUM). Группы-то правильные? Изобрази вместо рабочей суммы просто количество суммируемых элементов - IIF(условие, 1, 0)
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
PavlikPavlikovich

Сообщений: 171
Дата регистрации: 21.07.2010
Цитата:
Что значит "калькулирует не верно"?
Пока не понял как так получается. Грубо говоря должно получиться 1290 рублей, а фокс пишет 1292 Суммы все без копеек. как так не пойму. Иногда вообще не считает строку попадающую под условие.

Цитата:
Изобрази вместо рабочей суммы просто количество суммируемых элементов - IIF(условие, 1, 0)
имеете ввиду просто попробовать посчитать кол-ко строк попадающих под условие?


Цитата:
Группы-то правильные?
к суммированию в данном случае вопросов нет. Мне надо только не все входящее в группу суммировать, а только подходящее под условие (с признаком определённым)
В группе товары, цена, кол-во с признаками Расход и Приход.(чередуется, сортировка по дате идёт) мне нужно посчитать сумму Прихода и Расхода отдельно в группе товаров.
Пример как надо

Лук Приход 10 руб 2шт
Чеснок Приход 20 руб 3шт
Лук Расход 30 руб 1шт
_______________________________________
По приходу - 80 По расходу - 30 Разница-50

Короче кроме IIF Что можно еще попробовать?



Исправлено 4 раз(а). Последнее : PavlikPavlikovich, 17.04.20 15:56
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Taran

Сообщений: 13626
Откуда: Красноярск
Дата регистрации: 16.01.2008
PavlikPavlikovich
Пробовал писать iif(priznak=1,round(cena*kolichestvo,2),)
Работает как-то на половину. Калькулирует, но не верно.

Перед последней скобной ноль есть в реале?
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
PavlikPavlikovich

Сообщений: 171
Дата регистрации: 21.07.2010
Taran
PavlikPavlikovich
Пробовал писать iif(priznak=1,round(cena*kolichestvo,2),)
Работает как-то на половину. Калькулирует, но не верно.

Перед последней скобной ноль есть в реале?

Походу в этом и было дело ))) Спасибо всё заработало. Не было Нуля там, там было "---". Хотел не 0 ставить, а прочерк. И вот такой глюк получил.
Ratings: 0 negative/2 positive
Re: Отчёт, сумма по столбцу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Каким образом фокс должен был суммировать прочерки?
Если охота делать какие-то ещё вычисления с подобной суммой, от банального IIF(totalIn=0,'---',totalIn) до, похоже, необходимого в этом отчёте totalIn-totalOut, то стоит использовать переменные отчёта.
Задать начальное значение 0, "сохраняемое" значение - соответствующий IIF(isIn, price*amount, 0), "вычисление" - сумма, сброс - по группе или всему отчёту, смотря что надо.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
of63
Автор

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
НЕ, желание ПП понятно, если сумма=0, то изобразить прочерк...

> "использовать переменные отчёта" - это понятно... или наоборот, непонятно. Ведь реализовать группировки, и предложить к печати курсор - это каждый сможет (точнее, далеко не каждый).
В отчете бывают группировки, вложенные... Как сказать полю в группе (с опцией "SUM"), что если получилось 0, то печатать "---" ?



Исправлено 1 раз(а). Последнее : of63, 17.04.20 23:39
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Полю - никак (там есть опции форматирования, но насколько я помню среди них нет "заменять ноль на прочерки"), а вот переменной отчёта - запросто - т.к. можно её в любом выражении использовать. Собственно говоря я и привёл для примера такое выражение.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Отчёт, сумма по столбцу
of63
Автор

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Аа, это понятно. Кстати, если уж "переменные", то советую массив, массив SCATTER-обьектов отчето-подобного курсора, не стесняться с именно "переменными"

Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 29 (Гостей: 29)

© 2000-2024 Fox Club 
Яндекс.Метрика