Обща сума в колона DBGrid
Майстори, помогнете ми да реша въпроса: как да изчисля общата сума на една колона в DBGrid?
не ти трябва (не отразява нищо) Е, кажи ми защо се нуждаеш от сумата от 20 видими реда от няколкостотин общо налични (например).
Имам такава ситуация, имам калкулация за всяка позиция (заедно с лихви, данъци и т.н.), и накрая трябва да изчисля общата сума на всички стоки. Как да го направим?
Не страдайте, но инсталирайте DBGridEh на Дима Болшаков.
> Не страдайте, а инсталирайте DBGridEh на Dima Bolshakov. > > http://ehlib.com/eng/
И какво ще се промени, че ще започне да се брои?
И да видя? TDBGridEh наистина може да направи това "само", без да пише никакъв код. И много други неща могат.
Е, ако принципно не искате компоненти на трети страни, тогава разгледайте сумите със заявката SELECT MAX(..) .. или в цикъл над набора от данни.
Как започва да брои, какви опции трябва да се активират, за да започне да брои?
Пакетът EhLib има примери. Виж, там е. И в помощта също. Обърнете внимание на всичко, свързано с долния колонтитул и SumList> Просто кажете на вашия DataSet "например в OnCalcFields, > така че да преизчисли всичко.Нещо не разбрах как OnCalcFields ще помогне да се изчисли сумата за всички записи на DataSet"a :) IMHO, той има нужда от нещо като долен колонтитул. Или просто покажете тази сума в някакъв етикет или лента на състоянието и т.н.
Просто покажете общата сума на етикета
> Просто кажете на вашия DataSet "например в OnCalcFields, така че > да преизчисли всичко.
Как да му го кажа!!
Можете да използвате компонента TClientDataSet като DataSet. Има агрегати - възможно е да се преброят всякакви общи полета. И след това покажете стойностите вTLabel, както е препоръчано. Но това е тромав вариант. Ако няма забрана за използване на компоненти на трети страни, наистина е по-лесно да вземете TDBGridEh
И все пак не мога да си обясня упоритото „къде мога да взема такава решетка?“ нищо повече от чист мързел. Тук имаме заявка за показване на определен набор от данни, нека я наречем „основна заявка“ (RF). Изисква се някои колони да получат сумата (или числото, т.е. определен агрегат). OZ се състои от няколко части: SELECT, WHERE (JOIN) и ORDER BY
Нека изградим втора заявка, която замества SELECT RO със списък от агрегати: SUM(),COUNT(),MAX(). Изпълнението на тази заявка се поставя в процеса, който ние „дърпаме“, например, от събитието AfterOpen на основната заявка. В същия процес ние присвояваме стойности на съответните обобщени обекти за показване. Е, това не е абсолютно нищо сложно! Е, освен ако основната заявка не е статична ..