Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.05.2015, 22:34
gewasop gewasop вне форума
Прохожий
 
Регистрация: 05.05.2015
Сообщения: 26
Версия Delphi: Delphi XE7
Репутация: 10
Печаль Сумма подчиненной таблицы в главную

Ае почаны. Научите складывать. Нужно сложить все значения полей PRICE в дочерней таблице и занести эту сумму в главную таблицу.
Я правильно понял поле PRICE в главной таблице нужно делать вычисляемым? А что делать потом? Какими ивентами пользоваться и т.д.? Чето вообще незнаю. Буду благодарен, если поможете сделать все это дело для моего примера.

Firebird
Delphi XE7
Таблицы выводятся через Query.
Название компонентов:
-Таблица(главная) OOC - QOOC
-Таблица(дочерняя) OOC_MC - QOOC_MC
QOOC_MC связанна с QOOC через MasterFields с полями ID_OOC в главной и дочерней таблицах.

Изображения
Тип файла: png cbf.png (15.8 Кбайт, 1 просмотров)

Последний раз редактировалось gewasop, 05.05.2015 в 22:36.
Ответить с цитированием
  #2  
Старый 06.05.2015, 03:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Считай в запросе главной таблицы (если это только отображение):
Код:
SELECT m.*, sum(d.price) as PRICE
from master_table m left join detail_table d on m.id = d.master_id
group by m* -- здесь перечислить поля галвной табл
Если есть редактирование подч. табл. или не хочется перечислять все поля, то надо делать вычисляемое поле и в OngetData (или OnCalculate, не помню точно как), надо пройтись по подчиненной таблице и ручками все сложить.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
gewasop (06.05.2015)
  #3  
Старый 06.05.2015, 03:36
gewasop gewasop вне форума
Прохожий
 
Регистрация: 05.05.2015
Сообщения: 26
Версия Delphi: Delphi XE7
Репутация: 10
Хорошо

Ток сделал и увидел твой пост. Сделал подругом немного. Незнаю на сколько правильно, но пока все работает. Просто сам SQL не особо знаю, раньше не имел дело с ним.

Код:
procedure Tfdm.QOOCCalcFields(DataSet: TDataSet);
var
  tmpc: string;
begin
  tmpc := QOOC.FieldByName('ID_OOC').AsString;
  qqry.SQL.Clear;
  qqry.SQL.Add('SELECT SUM(PRICE) FROM OOC_MC WHERE ID_OOC=' + Trim(tmpc));
  qqry.Open;
  if qqry.Fields[0].AsString <> '' then
    QOOC.FieldByName('PRICE').Value := qqry.Fields[0].AsString;
end;

Последний раз редактировалось gewasop, 06.05.2015 в 03:40.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter