IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> вычисляемое поле - ''?''
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


В Dbgride есть столбцы, в в ячейках которых через запятую перечислены некоторые номера (например 56, 9,23,18). Столбец 1 и столбец 2. Данных в ячейках первого столбца всегода больши или равно ячейке воторого столбца. Нельзя ли сделать так чтобы количество номеров второго столбца вычиталось из первого? К примеру в одной из ячеек первого столбца содержится через запятую 7 элементов, во второй мы помещаем 5 элементов, и соответствующая ячейка третьего столбца нам показывает цифру 2?
Может вычисляемые поля Dbgrida подойдут? хотя у меня ничего не получилось с этим вариантом
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Нельзя ли сделать так чтобы количество номеров второго столбца вычиталось из первого?
Можно... Итак:

1) находим в Object Inspector-е источник данных для твоего DBGrid-а. Допустим, ADOTable2...
Прикрепленное изображение

2) щелкаем правой кнопкой мыши, выбираем NewField, и заполняем все необходимые данные (обязательно выставить Calculated, а не то, что предлагается для таблицы по умолчанию !!!):
Прикрепленное изображение
, после чего в ДБГриде должен появиться еще один столбец...

3) для этой же самой таблицы находим событие OnCalcField:
Прикрепленное изображение
и пишем для него обработчик:
procedure TForm1.ADOTable2CalcFields(DataSet: TDataSet);

// WideString - потому что такой тип у ADOTable2first.Value и у ADOTable2second.Value
function Counter(ws: WideString): integer;
var i: integer;
begin
result := 0;
for i := 1 to Length(ws) do
if ws[i] = ',' then Inc(result);
end;

begin
ADOTable2Y.Value := Counter(ADOTable2first.Value) - Counter(ADOTable2second.Value); // <--- Вот оно !!!
end;
Если такой алгоритм подсчета не нравится - реализуй любой другой, главное - чтоб ADOTable2Y.Value на выходе из процедуры содержало то, что тебе надо...

4) Все, спасибо за внимание, запускаешь и проверяешь...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.05.2024 0:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name