Вниз
Скачать: CL | DM;

Вычислимые поля   Найти похожие ветки 

 
Юлия   (2002-11-26 17:16) [0]

В таблице 3 поля: pole1, pole2, pole3
Одно из полей - сумма двух других.
Как это реализовать?


 
exit   (2002-11-26 17:21) [1]

На уровне приложения или Paradox?


 
exit   (2002-11-26 17:24) [2]

На уровне приложения:

TQuery.sql.add("Select pole1, pole2, (pole1+pole2) pole3 FROM my_table");

На уровне Paradox - увы.


 
mike-d ©   (2002-11-26 17:39) [3]

Просто добавьте вычисляемое поле (calculated field)


 
exit   (2002-11-26 17:44) [4]

2mike-d>Просто добавьте вычисляемое поле (calculated field)
Тоже вариант, но судя по вопросу, товарищ не в курсе.
Я так понимаю, имеется в виду Fields Collection компонентов TTable, TQuery... , где нужно сделать New Field, назначить его calculated... и т.д и т.п. ("ПРОСТО")


 
Юлия   (2002-11-26 17:51) [5]

Проблема немного в другом.
Когда это делать?
На форме лежит 3 DBEdit. Пользователь меняет значение, например, pole1. Когда нажимает кнопку "Применить" данные заносятся в таблицу. В это же время в pole3 должно меняться значение.
Это выглядит так:

i:=table1.FieldByname("pole1").AsInteger;
j:=table1.FieldByName("pole2").AsInteger;
table1.edit;
table1.FieldByName("pole3").AsInteger:=i+j;
table1.post;

По какому событию это должно происходить? Если AfterPost или что-то вроде этого, получается бесконечный цикл (рекурсия).
Что делать?


 
Виталий Панасенко   (2002-11-26 17:52) [6]

Для этого есть OnCalcFields


 
exit   (2002-11-26 17:55) [7]

Если это Calculated field - OnCalcFiels

table1.FieldByName("pole3").AsInteger:=i+j;

И ни каких Edit и Post;
Если это обычное поле, но перед Post в нем должна вычислиться сумма чего-либо, BeforePost
И опять ни каких Edit и Post;


 
mike-d ©   (2002-11-26 18:01) [8]

Намудрили...

Воспользуйтесь Fields Editor (правая кнопка или двойной клик на TTable). Загоните туда (Add all fields) все поля вашей таблички. Затем (дай Бог терпения!) там же "New Field", придумайте ему название, тип, и отметьте, что оно вычисляемое.
Затем в обработчике таблице OnCalcFields напишите для него выражение вроде:
table1.FieldByName("pole3").AsInteger:= table1.FieldByname("pole1").AsInteger + table1.FieldByName("pole2").AsInteger;
И будете счастливы!..


 
mike-d ©   (2002-11-26 18:02) [9]

Пока писал ответ, еще накидали советов.
Девушка, купите книжку...


 
Юлия   (2002-11-26 18:16) [10]

Exit: Спасибо, все получилось.
Mike-d: Тоже спасибо, но мне же нужно его еще и хранить...


 
ЮЮ ©   (2002-11-27 03:26) [11]

>но мне же нужно его еще и хранить
Зачем? Если его всегда можно посчитать, как на клиенте, так и в запросе!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.009 c
1-51755
Berg
2002-12-04 15:51
2002.12.16
Не запускается HELP


14-51926
Anatoly Podgoretsky
2002-11-23 14:34
2002.12.16
Именинники 23 ноября


1-51709
lovres
2002-12-05 23:49
2002.12.16
Помогите с элементарным классом


3-51562
Serginio
2002-11-26 12:11
2002.12.16
Структура индекса CDX . Очень нужно


3-51567
div
2002-11-27 07:49
2002.12.16
Потеря данных при некор.завершении программы




   Наверх