Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизВычислимые поля Найти похожие ветки
← →
Юлия (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c