Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 30.11.2010, 12: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 Кб, 98 просмотров)
Liones вне форума Ответить с цитированием
Старый 30.11.2010, 14:27   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Master-Detail (Динамиичское создание и разрыв) DelphiQuestions БД в Delphi 0 24.12.2009 00:35
Как и чем делают файлы .mdx, для Master-Detail HellMercenariess БД в Delphi 3 19.12.2009 04: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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS