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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 22:29   #1
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию Разница столбцов DBGrid-?

В DBGrid есть 2 столбца (А, В). В столбец А находятся некоторые значения. Нужно создать столбец С, который бы отображал разницу столбцов А и В. Если например в ячейку столбца В вводятся те же значения что есть в ячейке столбца А, то они как бы взаимно уничтожаются (условно, т.к. в самих ячейках и в базе никаких изменений не происходит) а столбец С отображает результат этого (он также доложен находиться в БД как и остальные), как показано на рисунке. Если в ячейки столбца В вводятся какие-то посторонние значения, столбец С их игнорирует.
Помогите реализовать столбец С?
Изображения
Тип файла: jpg 3.jpg (33.2 Кб, 57 просмотров)
Evgenii вне форума Ответить с цитированием
Старый 14.11.2009, 22:49   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вкратце:
Создайте вычисляемое поле и задайте для него соответствующую формулу.
Ну и принудительно вызывайте метод OnCalcFields по OnKeyPress вашего дбгрида...
Тогда столбец С будет моментально реагировать
Не забудьте только сделать проверку содержимого столбцов А и В, чтоб они пустые не попадали на вычисление. А то нарветесь на эксепшн...
mihali4 вне форума Ответить с цитированием
Старый 15.11.2009, 00:55   #3
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

вот насчет задания соответствующей формулы... незнаю я как ее задать. вот в чем дело
Evgenii вне форума Ответить с цитированием
Старый 15.11.2009, 01:15   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

C:=A-B не знаете как задать???
Ничего себе...
Код:
DBGrid2.DataSource.DataSet.FieldByName('C').Value:=
DBGrid2.DataSource.DataSet.FieldByName('A').Value-
DBGrid2.DataSource.DataSet.FieldByName('B').Value;
Не забудьте про проверку значений полей А и В - если там пусто - нужно подставлять нулевое значение.

Последний раз редактировалось mihali4; 15.11.2009 в 01:19.
mihali4 вне форума Ответить с цитированием
Старый 15.11.2009, 01:35   #5
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

В calculated field по-моему нужно это сделать таким образом?
Код:
ADOTable1C.Value:=
ADOTable1WideStringField3.value-
ADOTable1WideStringField6.value;
Но разве при этом из столбца А будут вычитаться только совпадающие со столбцом В значения?
Evgenii вне форума Ответить с цитированием
Старый 15.11.2009, 01:44   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Именно так.
OnCalcFields обрабатывает отдельно каждую запись (строку) БД.
mihali4 вне форума Ответить с цитированием
Старый 15.11.2009, 01:56   #7
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

Только вместо
Код:
ADOTable1WideStringField3.value-
ADOTable1WideStringField6.value;
нужно наверное сделать таким образом
Код:
ADOTable1WideStringField3.asstring-
ADOTable1WideStringField6.asstring;
т.к. там данные в виде строки?
Но в любом случае получается ошибка:Operator not applicable to this operand type. Получается что в вычисляемое поле я не могу занести данные такого типа которые хранятся в столбцах А и В?
Evgenii вне форума Ответить с цитированием
Старый 15.11.2009, 07:32   #8
VilAm
Пользователь
 
Аватар для VilAm
 
Регистрация: 14.11.2009
Сообщений: 56
По умолчанию

Цитата:
а почему asString-то?
AsFloat !
Мы чужды себе, мы, познающие, мы сами чужды себе
VilAm вне форума Ответить с цитированием
Старый 15.11.2009, 15:45   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от VilAm Посмотреть сообщение
AsFloat !
а вы обратите внимание на стартовый топик - на картинку
там явно не арифметическое вычитание и "десятичных" разделителей многовато
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вертикальное название столбцов в DBGrid EugeneIsmatulin Общие вопросы Delphi 3 29.05.2009 08:58
Удаление столбцов в DBGrid-e artemavd БД в Delphi 4 24.10.2008 14:30
Изменить названия - заглавия столбцов в DBGrid Elena БД в Delphi 4 06.06.2007 11:31
Изменение размеров столбцов в DBGrid Elena БД в Delphi 1 15.05.2007 11:41
Ширина столбцов в DBGrid Elena БД в Delphi 1 27.04.2007 15:34