|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2013, 23:18 | #1 |
Пользователь
Регистрация: 16.04.2012
Сообщений: 64
|
Совет по поводу вычисляемого поля в firebird
Здравствуйте. Существует таблица с данными, тип поля: NUMERIC(5,1). В программе есть форма с DBGRID, где необходимо произвести вычисление. Т.е. внес количество, поменялась сумма. Хотелось бы подсказку получить, как лучше и правильнее это организовать? Создать вычисляемое поле через IBQUERY и потом его результат "складывать" в БД или создать триггер в самой базе? Необходимо, чтобы сумма пересчитывалась моментально. Я так думаю, что первый вариант будет наиболее правильный, но хотелось бы узнать мнение специалистов.
|
12.03.2013, 00:14 | #2 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
Если нужно хранить сумму, то поле в нужной таблице, если нет, то можно запросом отображать, через Query. Тут как удобнее...
Каким бразом изменения производятся? Отдельная формачка или кликом по гриду? |
12.03.2013, 00:18 | #3 |
Пользователь
Регистрация: 16.04.2012
Сообщений: 64
|
Изменение данных происходят в самом гриде, по клику. Ну т.е. некое поле "Масса" открыто на редактирование, тупо вписал количество и нажал Enter, либо перескочил на другу. строку и данные должны перечитаться. Потому что, тут же на подхвате срабатывает TDBSumList. Использую компоненты EhLib.
|
12.03.2013, 00:24 | #4 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
Если у вас таблица отвечающая за заказы, то должно быть поле которое будит помнить на какую сумму сделан заказ, если же нет и опять же повторюсь нет необходимости хранить данные о сумме, то можно без поля в бд, как вам удобнее...
|
12.03.2013, 00:31 | #5 |
Пользователь
Регистрация: 16.04.2012
Сообщений: 64
|
Используются поля: "Белки", "Жиры", "Углеводы", "Калорийность". А вот меняются как раз сами "граммы". По умолчанию, при добавлении записи, происходит подстановка = 100г. Т.е. б/ж/у/к так же имеются в БД. И хранить их нужно, потому что в дальнейшем по ним будет строиться график. Будет удобней работать с уже имеющимися данными, чем вновь пересчитывать, тем более, что БД будет постоянно расти.
|
12.03.2013, 00:36 | #6 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
ну вот вы сами и ответили! и опять же хочу сказать что не надо делать название полей на русском
|
12.03.2013, 00:41 | #7 | |
Пользователь
Регистрация: 16.04.2012
Сообщений: 64
|
Цитата:
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 Просто я на Русском написал названия полей, чтобы было понятней, чего я хочу. Тогда получается, лучше делать подсчет в гриде... Более того, БД будет находиться на удаленном сервере и к чему лишний трафик... Ну спасибо, что помог мне дойти до истины. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Фильтр вычисляемого поля | 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 |