Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Отследить изменение поля таблицы в DBGrid   Найти похожие ветки 

 
neat   (2005-03-03 11:03) [0]

Здравствуйте Все!
Вопрос простой, но отнял у меня довольно много времени. Как отследить, изменялось ли (использую DBGrid) значение конкретного(WBD) поля. Я решил это так. Может существуют другие способы ?

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
If Field <> nil then begin
   If Field.FieldName = "WBD" then
   begin
     Table1["PN"]:=Table1["WBF"]-Table1["WBD"];
     Table1.Post;
   end;
end;


 
Johnmen ©   (2005-03-03 11:06) [1]

конкретное_поле.OnChange


 
ЮЮ ©   (2005-03-03 11:15) [2]

DataSource1DataChange - этот обработчик вызовется и просто при переходе с записи на запись, есле при этом значение поля Field меняется. Выкинь его из таблицы (PN), если это просто разность двух полей, и будет тебе счастье (а то ведь в таблице можно ещё поменять WBF и само PN - без твой программы - и что тогда будет?


 
neat   (2005-03-03 12:58) [3]

конкретное_поле.OnChange - ну и как это использовать ?


 
Johnmen ©   (2005-03-03 13:03) [4]

Ну и так, как написано в хелпе F1


 
ЮЮ ©   (2005-03-03 13:04) [5]

В DataSet-е вызвать Fields Editor, добавить все поля, а у поля конкретное_поле написать обработчик OnChange


 
clickmaker ©   (2005-03-03 13:05) [6]

DataSet.UpdateStatus
для текущей записи, в цикле мона проверить для всех

для конкретного поля сравни Field.Value и Field.NewValue после Post


 
neat   (2005-03-03 13:33) [7]

Fields Editor наверное хорошее решение, но ведь это создаются статические поля, мне тогда придётся весь модуль перелопачивать (он у меня не маленький).

сравни Field.Value и Field.NewValue - это если включено CachedUpdates. Простите я не знаю как это использовать. Посмотрел в Help - там есть процедуры, котрые неизвестно в каком модуле, в общем не получилось.

Ну и так, как написано в хелпе F1 - если знаешь, так и напиши, мне ответ нужен, а не намёк. Я итак времени потратил немало, ты мне предлагаешь ещё потренироваться.


 
ЮЮ ©   (2005-03-03 13:39) [8]

А почему это не воткнуть в BeforePost?

И вообще, как насчет "Выкинь его из таблицы (PN), если это просто разность двух полей, и будет тебе счастье (а то ведь в таблице можно ещё поменять WBF и само PN - без твой программы - и что тогда будет?"



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

Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
14-1110203727
Ломброзо
2005-03-07 16:55
2005.03.27
По просьбам трудящихся!


14-1110391589
Хенд
2005-03-09 21:06
2005.03.27
Assembler


3-1109250939
Sam Stone
2005-02-24 16:15
2005.03.27
Старый глюк с DOA


6-1106273939
Cryon
2005-01-21 05:18
2005.03.27
Ошибка idpop3 socket error 10066


1-1110951645
Tankist
2005-03-16 08:40
2005.03.27
LISTBOX - Как сортировать элементы не по 1-му столбцу, а по 2-му?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский