Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-24716
kristinA
2003-06-25 00:09
2003.09.08
kakim obrazom mozhno pomestit tekst iz okon v pismo?


6-24594
Jao
2003-07-02 14:58
2003.09.08
Indy. TidTCPClient - где ошибка?


1-24531
Eagle Owl
2003-08-26 20:02
2003.09.08
Число в шестнадцатеричном формате...


1-24463
Yasmina
2003-08-28 07:52
2003.09.08
помогите с отчетом


3-24313
Buka
2003-08-14 22:52
2003.09.08
Locate в ADO? Работает ли?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский