Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-51808
kepten
2002-12-05 09:50
2002.12.16
Как неписать много if


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


14-51912
Separator
2002-11-12 12:02
2002.12.16
Графический редартор


1-51833
JKL
2002-12-05 15:34
2002.12.16
Размер файла


1-51685
Dik!S
2002-12-03 14:19
2002.12.16
Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский