Главная страница
    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.037 c
1-1110556503
redlord
2005-03-11 18:55
2005.03.27
Socket : TCustomWinSocket в качестве владельца


3-1109784056
Алексей Петухов
2005-03-02 20:20
2005.03.27
blob поля в ms access и ado


9-1104594267
Xenon
2005-01-01 18:44
2005.03.27
Опаньки посмотрите


1-1110983578
hgd
2005-03-16 17:32
2005.03.27
Прервать onclose


1-1111050918
markers
2005-03-17 12:15
2005.03.27
Pass





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