| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > не срабатывает проверка на Modified |
| Автор: santilaas 25.5.2007, 17:02 | ||
| Привет всем! Firebird1.5.3, FibPlus5.2, Ehlib4.0 Ситуация такая: редактирую записи непосредственно в таблице (т.е. через DBGridEh), другими словами, без использования формы редактирования. Притом все довольно таки примитивно - на соответствующие кнопки пишу: добавить - DM.DataSet.Append; изменить - DM.DataSet.Edit; удалить - DM.DataSet.Delete; сохранить - DM.DataSet.Post; При закрытии формы хочу, чтобы проверялось условие - если запись модифицировалась, тогда предлагать, сохранить изменения перед закрытием или нет. Пишу:
Затем добавляю данные, без сохранения и пытаюсь закрыть форму НО!!! - (проверял отладчиком) - показывает, что DM.DataSet.Modified = False Вопрос: почему? как тогда быть? |
| Автор: Palladin 26.5.2007, 01:11 | ||
| если показывает что false, а тебе обязательно сохранить попробуй обмануть систему, вообщем в любое поле твоей БД, к примеру поле "Фамилия", добавь в любую имеющуюся строку любой символ и сразу его удали, я думаю такие действия приведут к тому что modified будет показывать true:) я думаю ты понял что я имею ввиду, или можеш просто добавить один пробел в конец любой записи, хуже базе от этого не станет Или вариант создай в БД еще одно поле, которое в программе видно не будет(visible:=false:)) и туда заноси что угодно, после этого точно будет modified = true, да и делай любое из моих предложений, сразу перед вызовом твоего if, т.е. тут:
|
| Автор: santilaas 26.5.2007, 14:23 |
| перед тем, как задать вопрос на форум, я пробовал сделать подобное и Modified действительно устанавливался в True, но по моему мнению при редактировании записи через DBGridEh изменения должны менять Modified в любом случае, и почему этого не происходит не понятно. Т.е. получается вариант с непосредственным редактированием записи единственный возможный? |