Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2009, 04:38   #1
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию Paradox вставка записи Append

Доброго времени суток.
Как отменить вставку записи, при неудачной попытке?
Например:
в таблице есть несколько полей с типом NOT NULL, несколько полей типа NULL и одно ключевое автоинкриментное.
таблицу отображаем в DBGridEh и редактируем ее непосредственно через грид. Так вот при вставке новой записи, если не заполнено поле с типом
NOT NULL естественно наблюдается ошибка.
Чтобы ее небыло в обработчике событий BeforePost пытаюсь проверять поле на введенные данные.
Код:
Table1.BeforePost
Table1.FieldByName('Data').AsDateTime := Now;
if Table1.FieldByName('POLE1').AsString = '' then
begin
ShowMessage('бла-бла-бла');
Table1.Cancel;
end;
Так вот, после бла-бла-бла в таблицу почему-то вставляется запись, но интересно, что эта запись(вставку которой я пытался отменить) дублирует последнюю запись, которая была до ее вставки. Получается 2 идентичные записи в конце таблицы, отличающиеся только полем ID, которое увеличивается на 1(как и должно быть).
Заранее спасибо!

Последний раз редактировалось начинающий1; 24.10.2009 в 13:46. Причина: добавил Table1.FieldByName('Data').AsDateTime := Now;
начинающий1 вне форума Ответить с цитированием
Старый 24.10.2009, 11:20   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Код:
try
Table1.Post;
Except
Table1.Cancel;
ShowMessage('Ошибка сохранения записи');
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 24.10.2009, 13:35   #3
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
Код:
try
Table1.Post;
Except
Table1.Cancel;
ShowMessage('Ошибка сохранения записи');
end;
В обработчике событий Table1.BeforePost этот код не работает. Ошибка переполнения стека.
начинающий1 вне форума Ответить с цитированием
Старый 29.10.2009, 07:24   #4
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Код:
procedure TForm1.MyDataBeforePost(DataSet: TDataSet);
begin
Table1.FieldByName('Data').AsDateTime := Now;
if Table1.FieldByName('POLE1').AsString = '' then
begin
ShowMessage('бла-бла-бла');
Abort;
end;
end;
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Firebird.pFIBQuery.Вставка записи artemavd БД в Delphi 45 28.12.2009 18:47
Помогите, пожалуйста, с Append в BD DS75 БД в Delphi 5 21.04.2009 09:49
append subsonic Общие вопросы Delphi 2 08.01.2008 14:58
Вставка записи в поле графического типа Bibigul БД в Delphi 3 10.04.2007 16:07