Форум: "Базы";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизИтоги и ApplyUpdate Найти похожие ветки
← →
Алексей Петухов (2003-08-16 18:33) [0]Уважаемые, мастера.
Научите пожалуйста, как правильно подсчитать итоги (сумму) по вычисляемому полю в TQuery, если TQuery кэшируется, а итоги хотелось бы видеть до ApplyUpdate по ходу заполнения TDBGrid-а.
← →
Алексей Петухов (2003-08-17 09:36) [1]Надеюсь на вашу поддежку,
мастера
.
← →
sniknik (2003-08-17 12:02) [2]надежда дело хорошее (особенно если это Она ;о))), но грамотная постановка вопроса важнее.
← →
Алексей Петухов (2003-08-17 12:58) [3]Вот кусочек SQL запроса:
select ...,
sum(kolvo*cena_pok) summ_pok, sum(kolvo*cena_prod) summ_prod
from ...
where ...
group by ...
order by ...
Как вы видите, здесь имеются два вычисляемых поля: summ_pok и summ_prod.
Мне нужно подсчитать итоговую сумму по этим полям.
Что-то типа:
select
sum(kolvo*cena_pok) summ_pok, sum(kolvo*cena_prod) summ_prod
from ...
where ...
Но:
1. Набор возвращаемый первоначальным запросом должен быть
сохранен.
2. Query первоначального запроса кэшируется, в связи с этим
надо как-то пересчитывать итоги по стобцам summ_pok и
summ_prod при добавлении, редактировании, удалении полей.
Как это сделать?
← →
sniknik (2003-08-17 14:00) [4]ну это не совсем вычисляемые поля, они считаются в запросе и в рекордсет(временную таблицу для BDE) попадают уже результаты поэтому чтобы их пересчитать надо рефреш для Query сделать.
если сделаеш истино вычисляемыми (двойной клик на квери, добавить поле(по правой кнопке), тип Calculated), "проблема" уйдет, все будет менятся по ходу и ничего дополнительно делать не придется.
← →
Алексей Петухов (2003-08-17 15:17) [5]Да нет, в общем у меня конкретно с вычисляемыми полями в данном случае нет, мне-бы итог по вычисляемому полю, сумму всей колонки получить.
← →
Алексей Петухов (2003-08-17 15:19) [6]Извиняюсь, пропустил слово " проблем" после " данном случае"
← →
sniknik (2003-08-17 16:30) [7]вобщето просумировать summ_pok, summ_prod самому и отобразить (в Label.Caption к примеру) не проблема, пересчитывать > "при добавлении, редактировании, удалении полей".
считать естественно от оригинального query
select ...,
sum(kolvo*cena_pok) summ_pok, sum(kolvo*cena_prod) summ_prod
from ...
(???)
← →
Алексей Петухов (2003-08-17 18:54) [8]А как это делать?
отрабатывать события
beforeEdit,beforeInsert,beforeDelete,
afterEdit,afterInsert,afterDelete?
← →
sniknik (2003-08-17 19:40) [9]смотри у события у квери, все что ты написал
procedure TForm1.Query1BeforeEdit(DataSet: TDataSet);
begin
end;
procedure TForm1.Query1BeforeInsert(DataSet: TDataSet);
begin
end;
....
← →
Алексей Петухов (2003-08-17 19:54) [10]Уже попрбовал, такая ерунда получилась:
procedure TfNakTelo.qySpravAfterInsert(DataSet: TDataSet);
begin
try
laSummaProd.Caption:=currtostr(deltaSummProd+qySprav.fieldbyname("summ _prod").AsCurrency);
except
end;
inherited;
end;
Возникает исключение "Invalid Floating pointer operation"
И это событие происходит раньше, чем OnCalcFields
← →
sniknik (2003-08-17 22:14) [11]"summ _prod" пробел в имени это так задумано?
inherited; не нужно (нет там ничего у родителя)
нет проверки на null в поле (невозможная ситуация?)
в AfterInsert данных в поле скорее всего нет, (их же еще не занесли) лутше в onPost
OnCalcFields неважно когда происходит, если запрос такой как ты написал Алексей Петухов (17.08.03 12:58) [3] и ты их считаеш, и если нет вычисляемых полей как я писал sniknik © (17.08.03 14:00) [4] и ты их пытаешся посчитать.
← →
Алексей Петухов (2003-08-18 06:43) [12]> "summ _prod" пробел в имени это так задумано?
Нет очепятка вкралась.
> inherited; не нужно (нет там ничего у родителя)
А у меня есть.
> нет проверки на null в поле (невозможная ситуация?)
Точно.
> в AfterInsert данных в поле скорее всего нет, (их же еще не занесли) лутше в onPost
А вот это попробуем.
> если запрос такой как ты написал Алексей Петухов (17.08.03 12:58) [3]...
...полей как я писал sniknik © (17.08.03 14:00) [4]...
А уменя то так, то сяк.
← →
Sergey13 (2003-08-18 09:04) [13]2Алексей Петухов (16.08.03 18:33)
>хотелось бы видеть по ходу заполнения TDBGrid-а.
поставь грид из EhLib и будет тебе счастье
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c