Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.19;
Скачать: CL | DM;

Вниз

Подскажите! Сумма чисел в колонке DBGrida   Найти похожие ветки 

 
lscomp ©   (2002-11-28 19:02) [0]

Есть колонка с числами как в DBGrid найти сумму всех чисел...


 
Cranium ©   (2002-11-28 19:57) [1]

Грид тут не причем, считай сумму в наборе данных, чего ты тым пользуешь: TTable, TQuery?


 
MsGuns ©   (2002-11-28 20:27) [2]

Значительно эффективнее:
1.Кладешь TQuery с SQL:
SELECT CAST(SUM(NumField1) AS DECIMAL(15,2)) AS SUM1,
CAST(SUM(NumField2) AS DECIMAL(15,2)) AS SUM2,
CAST(SUM(NumField3) AS DECIMAL(15,2)) AS SUM3,
...........
WHERE условия, по которым выбираются данныве для грида
2. Кладешь TDataSource с DataSet=Query суммирования
3. Внизу (вверху, сбоку,...) грида кладешь столько TDBEdit`в, сколько надо сумм. Св-во DataSource > п.2, DataField>SUM1/2/3..
4. В событии, где открывается форма с гридом даешь
Query.Prepare
Query.Open
5. А дальше только периодический Refresh этой квери (в частности в обработчиках AfterPost/Delete)


 
lscomp ©   (2002-11-29 09:31) [3]

И как посчитать сумму в TTable?


 
nejest ©   (2002-11-29 12:07) [4]

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


 
BorisUK ©   (2002-11-29 12:11) [5]

Вместе с EhLib ставится какаято штука DBSumList1
Сам такой фигней не пользовался и тебе не советую..
SQL он всеже лучше :)
Такчто послушайся советов делай через Query


 
MsGuns ©   (2002-11-29 12:17) [6]

>nejest © (29.11.02 12:07)
>Для дочерних таблиц есть одно отличие, там нужно проверять соответствует ли запись дочерней таблицы выбранной записи материнской таблицы и только после этого суммировать значение.

При правильно построенной связке "один-ко-многим" никаких проверок делать не надо,- подчиненный датасет будет содержать только подчиненные записи текущей записи главной таблицы.


 
Praco ©   (2002-11-29 12:24) [7]

BorisUK © (29.11.02 12:11)
Возможность выведения итогов есть в самом TDBGridEh, причем не только sum, но и count, avg, пользовательская функция. Я использую и в целом доволен, выглядит красиво.


 
nejest ©   (2002-11-29 12:26) [8]

>MsGuns
>При правильно построенной связке "один-ко-многим" никаких проверок делать не надо,- подчиненный датасет будет содержать только подчиненные записи текущей записи главной таблицы.


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


 
MsGuns ©   (2002-11-29 12:30) [9]

>nejest © (29.11.02 12:26)
>вроде при ручном просмотре

А при ручном - это как - на фиг датасет и руками по секторам веника ?


 
nejest ©   (2002-11-29 12:53) [10]

> MsGuns
> А при ручном - это как - на фиг датасет и руками по секторам веника ?

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


 
MsGuns ©   (2002-11-29 13:38) [11]

>nejest © (29.11.02 12:53)

Если идет ЛЮБОЕ обращение к детализации связки, включая перемещения, Locate, фильтры, а также RecNo() для локалок и RecordCount - то объектами могут быть только записи детала, находящиеся в отношении Много-к-одному с ТЕКУЩЕЙ (АКТИВНОЙ) ЗАПИСЬЮ мастер-таблицы. Конечно, можно проверять в каждой записи значение мастер-ключа, но оно будет всегда "равно".



Страницы: 1 вся ветка

Текущий архив: 2002.12.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
14-61795
Слесарь Матерящийся
2002-11-28 13:47
2002.12.19
Очень нужная программа


1-61625
Riperr
2002-12-07 08:59
2002.12.19
Metods


1-61523
dimonf
2002-12-09 10:13
2002.12.19
Передача данных в TreeView!


4-61887
kostik78ua
2002-11-06 09:29
2002.12.19
процессы запущенной проги


1-61618
biss
2002-12-06 13:29
2002.12.19
Форма в Делфи