Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 11:23   #1
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию Master-detail DELPHI+FIREBIRD

Снова я с вопросом. Суть вот в чем:
Есть три таблицы: картотека (master), карт-диеты(detail), карт_продукты(detail). В базе связала их внешним ключом, по полю NAME_B.
На форму кинула три IBDataSet, связала их. В окне все отображается как надо, т.е. выбираю блюдо и вижу только его продукты и диеты. Но, мне нужно по нажатию кнопки расчитать калорийность блюда по продуктам, а не получается. Можно ли как-то сделать закладку на записи, а то получается я выбираю произвольную запись, а расчет идет только по первой в таблице.
Код:
nameb:=DM.IBDSKartprodNAME_B.AsString;
DM.IBQTemp.Active:=False;
DM.IBQTemp.SQL.Clear;
DM.IBQTemp.SQL.Text:='select NAME_B, SUM(NETTO) as VH, SUM(BEL) as BEL_S, SUM(GIR) as GIR_S, SUM(UGL) as UGL_S '+
                     'from KART_PROD '+ 
                     'where (NAME_B like '+#39+nameb+'%'+#39') '+
                     'group by NAME_B';
DM.IBQTemp.Active:=True;
DM.IBQTemp.Open;
bel_s:=DM.IBQTemp.FieldValues['BEL_S'];
gir_s:=DM.IBQTemp.FieldValues['GIR_S'];
ugl_s:=DM.IBQTemp.FieldValues['UGL_S'];
vh:=DM.IBQTemp.FieldValues['VH'];
bel_u:=(bel_s*84.5/100)+0.04;
gir_u:=(gir_s*94/100)+0.04;
ugl_u:=(ugl_s*95.6/100)+0.04;
kkal_s:=(bel_s*4)+(gir_s*9)+(ugl_s*4);
kkal_u:=(bel_u*4)+(gir_u*9)+(ugl_u*4);
DM.IBQTemp.Active:=False;
DM.IBQTemp.SQL.Clear;
DM.IBQTemp.SQL.Text:='update KARTOTEK set BEL_S='+#39+FloatToStrF(bel_s,ffFixed,6,2)+#39+','+
                      'GIR_S='+#39+FloatToStrF(gir_s,ffFixed,6,2)+#39+','+
                      'UGL_S='+#39+FloatToStrF(ugl_s,ffFixed,6,2)+#39+','+
                      'BEL_U='+#39+FloatToStrF(bel_u,ffFixed,6,2)+#39+','+
                      'GIR_U='+#39+FloatToStrF(gir_u,ffFixed,6,2)+#39+','+
                      'UGL_U='+#39+FloatToStrF(ugl_u,ffFixed,6,2)+#39+','+
                      'KC_S='+#39+FloatToStrF(kkal_s,ffFixed,6,2)+#39+','+
                      'KC_U='+#39+FloatToStrF(kkal_u,ffFixed,6,2)+#39+','+
                      'NETTO='+#39+FloatToStrF(kkal_u,ffFixed,6,2)+#39+
                      'where (NAME_B like '+#39+nameb+'%'+#39+');';
DM.IBQTemp.Active:=True;
DM.IBQTemp.Open;
Изображения
Тип файла: jpg окно.jpg (134.1 Кб, 99 просмотров)
Liones вне форума Ответить с цитированием
Старый 30.11.2010, 13:27   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

внешний ключ по наименованию - это круто - айдишники рулят
чтобы не городить весь этот огород с кучей запросов проще всего весь расчет свести в селективную ХП - пусть сервер этим занимается по необходимости, а не клиент
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Master-Detail (Динамиичское создание и разрыв) DelphiQuestions БД в Delphi 0 23.12.2009 23:35
Как и чем делают файлы .mdx, для Master-Detail HellMercenariess БД в Delphi 3 19.12.2009 03:06
Сценарий Master-Detail в WPF Antonio_M Общие вопросы .NET 0 28.08.2009 10:33
Master-detail отчет Fast Report. truevoxdei Компоненты Delphi 3 28.04.2009 13:20
Не работает master-detail для adostoredprocedure VAbramyak БД в Delphi 2 24.04.2007 16:48