Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: 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 вся ветка

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
7-51984
max2057
2002-10-14 13:39
2002.12.16
Как правильно скопировать массив Byte в TMemory Stream


1-51753
kingdom
2002-12-04 12:39
2002.12.16
Очень нужен LanManager.zip!!


1-51810
brestmarket
2002-12-05 11:52
2002.12.16
Необходимы ответы при использовании стандартных компонент Delphi6


1-51812
Юра
2002-12-05 11:33
2002.12.16
Параллельные действия и TTimer


6-51860
Valt
2002-10-21 15:53
2002.12.16
SMTP Error 503