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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 23:18   #1
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию Совет по поводу вычисляемого поля в firebird

Здравствуйте. Существует таблица с данными, тип поля: NUMERIC(5,1). В программе есть форма с DBGRID, где необходимо произвести вычисление. Т.е. внес количество, поменялась сумма. Хотелось бы подсказку получить, как лучше и правильнее это организовать? Создать вычисляемое поле через IBQUERY и потом его результат "складывать" в БД или создать триггер в самой базе? Необходимо, чтобы сумма пересчитывалась моментально. Я так думаю, что первый вариант будет наиболее правильный, но хотелось бы узнать мнение специалистов.
Евгений_Магистр вне форума Ответить с цитированием
Старый 12.03.2013, 00:14   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Если нужно хранить сумму, то поле в нужной таблице, если нет, то можно запросом отображать, через Query. Тут как удобнее...
Каким бразом изменения производятся? Отдельная формачка или кликом по гриду?
Dozent вне форума Ответить с цитированием
Старый 12.03.2013, 00:18   #3
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
Если нужно хранить сумму, то поле в нужной таблице, если нет, то можно запросом отображать, через Query. Тут как удобнее...
Каким бразом изменения производятся? Отдельная формачка или кликом по гриду?
Изменение данных происходят в самом гриде, по клику. Ну т.е. некое поле "Масса" открыто на редактирование, тупо вписал количество и нажал Enter, либо перескочил на другу. строку и данные должны перечитаться. Потому что, тут же на подхвате срабатывает TDBSumList. Использую компоненты EhLib.
Евгений_Магистр вне форума Ответить с цитированием
Старый 12.03.2013, 00:24   #4
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Если у вас таблица отвечающая за заказы, то должно быть поле которое будит помнить на какую сумму сделан заказ, если же нет и опять же повторюсь нет необходимости хранить данные о сумме, то можно без поля в бд, как вам удобнее...
Dozent вне форума Ответить с цитированием
Старый 12.03.2013, 00:31   #5
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
Если у вас таблица отвечающая за заказы, то должно быть поле которое будит помнить на какую сумму сделан заказ, если же нет и опять же повторюсь нет необходимости хранить данные о сумме, то можно без поля в бд, как вам удобнее...
Используются поля: "Белки", "Жиры", "Углеводы", "Калорийность". А вот меняются как раз сами "граммы". По умолчанию, при добавлении записи, происходит подстановка = 100г. Т.е. б/ж/у/к так же имеются в БД. И хранить их нужно, потому что в дальнейшем по ним будет строиться график. Будет удобней работать с уже имеющимися данными, чем вновь пересчитывать, тем более, что БД будет постоянно расти.
Евгений_Магистр вне форума Ответить с цитированием
Старый 12.03.2013, 00:36   #6
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Евгений_Магистр Посмотреть сообщение
И хранить их нужно, потому что в дальнейшем по ним будет строиться график. Будет удобней работать с уже имеющимися данными, чем вновь пересчитывать, тем более, что БД будет постоянно расти.
ну вот вы сами и ответили! и опять же хочу сказать что не надо делать название полей на русском
Dozent вне форума Ответить с цитированием
Старый 12.03.2013, 00:41   #7
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
ну вот вы сами и ответили! и опять же хочу сказать что не надо делать название полей на русском
Нет, базы выглядит вроде нормально:
TABLE FOOD (
ID INTEGER NOT NULL,
FOOD_NAME VARCHAR(150),
FOOD_PROTEIN NUMERIC(5,1),
FOOD_FAT NUMERIC(5,1),
FOOD_CARBOHYDRATE NUMERIC(5,1),
FOOD_CALORIES NUMERIC(5,1),
GRUPPA_ID INTEGER,
FOOD_COEFFICIENT NUMERIC(6,2) DEFAULT 100

Просто я на Русском написал названия полей, чтобы было понятней, чего я хочу. Тогда получается, лучше делать подсчет в гриде... Более того, БД будет находиться на удаленном сервере и к чему лишний трафик... Ну спасибо, что помог мне дойти до истины.
Евгений_Магистр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр вычисляемого поля a_n_n_a БД в Delphi 5 21.03.2012 04:09
Сохранить значение вычисляемого поля Nika03 БД в Delphi 8 10.05.2010 22:17
Сумма вычисляемого поля TTable Anton.sev Общие вопросы Delphi 1 10.05.2010 20:31
Изменение вычисляемого поля в коде Земляника БД в Delphi 5 04.06.2009 19:35
Изменение вычисляемого поля в коде Земляника SQL, базы данных 0 04.06.2009 10:02