![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопром по DBF таблицам... [D4, dBase, FoxPro, ]
Nimnul © (2001-12-26 08:49:00)Есть таблица Table2 и связаный DBGrid.
Всего 6 колонок. 4 колонки пользователь
может изменять,а в 6 должна писаться сумма
всех четырех.Вопрос:
Надо считать это все динамически.
Пыталься использовать DataSource2.OnDataChange,
Table2.AfterPost
Но когда я пишу в 6 колонку(итоговую) вызываются эти события,
цикл однако.
Как можно выйти из ситуации?
(Ничего не могу придумать)
Nimnul (2001-12-26 15:49:00) [1]Теперь разобрался, но теперь когда ставлю
fkcalculatedто все считается, а когда
fkinternalCalcто никаких изменеий ничего не считается и в
базу не пишется...
2Delirium
Спасибо, попробую.
Jony (2001-12-26 15:43:00) [2]Попробуй суммирование поставить в обработчики события OnChange всех четырех полей в наборе данных, связанным с гридом. Если не ошибаюсь, то реагировать будет чуть ли не на каждый разряд, вводимый в поле.
Delirium (2001-12-26 15:18:00) [3]Хотя, я тут попробывал, можно и просто:
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
Table1.FieldByName("S").AsInteger:=Table1.FieldByName("N1").AsInteger+
Table1.FieldByName("N2").AsInteger;
end;
всё равно ничего не циклится.
Delirium (2001-12-26 15:02:00) [4]
var Ok:boolean;
procedure TForm1.Table1BeforeEdit(DataSet: TDataSet);
begin
Ok:=True;
end;
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
Ok:=True;
end;
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
if Ok then
begin
Table1.FieldByName("S").AsInteger:=Table1.FieldByName("N1").AsInteger+
Table1.FieldByName("N2").AsInteger;
Ok:=False;
end;
end;
И никаких "циклов".
Nimnul (2001-12-26 14:46:00) [5]2panov
Спасибо, создал.
Но мне нужно сохранять в базу, я нашел
свойство fkinternalCalc, но генерит ошибку.
При fkcalculated все нормально, сделал
Table2.Edit все равно ошибка. :-(
panov (2001-12-26 09:13:00) [6]Создай вычисляемое поле.