Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Исключения   Найти похожие ветки 

 
Loco ©   (2002-07-14 16:18) [0]

Приветствую всех! :))
Подскажите, если не сложно, проблема такова:
При активации формы добавляется запись в таблицы (вызывается метод append); при закрытии, для сохранения изменений, метод post. Так вот при закрытии порождается исключение следующего содержания:
Project XXX.exe raised exception class EDatabaseError with message"work: Dataset not in edit or insert mode" Process stopped. Use step or Run to continue.
Кто знает как исправить, подскажите, plizzzzz!

код:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.person.post;
DM.work.post;
DM.doc.post;
DM.kontakt.post;
DM.sobstv.post;
mainmCred.Form1.Visible:=True;
end;

procedure TForm2.FormActivate(Sender: TObject);
begin
mainmCred.form1.Visible:=False;
DM.work.append;
DM.kontakt.append;
DM.doc.append;
DM.sobstv.append;
DM.person.append;
end;



 
Anatoly Podgoretsky ©   (2002-07-14 16:53) [1]

Очень неожиданное применение OnCreate и OnActivate, второе просто нельзя использовать для данной цели, так как может вызываться более одного раза
Но если не брать во внимание вышесказанное, то стоит отметить в приведенном коде ошибка не наблюдается, ошибка где то за пределами этого кода.


 
Loco ©   (2002-07-14 17:09) [2]

2Anatoly Podgoretsky
А по какому событию лучше сделать, а ошибка, как я понимаю при вызове post.


 
IlyaA   (2002-07-15 08:39) [3]

Возможно, что после вставки в какую-то из твоих таблиц ты сместил в ней указатель (перешёл на др. запись), после чего автоматически вызвался метод Post.
Тогда тебе надо писать
if (Table.State=stInsert) or (Table.State=stInsert) then
Table.Post;


 
Lord Warlock ©   (2002-07-15 09:10) [4]


> IlyaA (15.07.02 08:39)


наверное имелось в виду
if Table.State in [dsInsert,dsEdit] then
Table.Post;


 
Lucypher   (2002-07-17 00:23) [5]

> Lord Warlock
Это тонкости, которые, насколько я помню одинаково правильны... :)

>Loco
проблема, действительно где-то между OnActivate (кстати, а почему не OnCreate?) и OnClose.


 
kaif ©   (2002-07-17 02:19) [6]

А сетка (DBGrid) на форме имеется? У нее есть такое свойство (в Options, кажется) - CancelOnExit. Возможно, при смещении фокуса ввода с сетки на кнопку Close происходит автоматический вызов DataSet.Cancel и тогда исключительная ситуация при Post неизбежна.
А вообще Podgoretsky прав. Лучше так не делать. То есть можно так делать, но только для модальной формы.



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

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
8-24127
Серж Долгов
2002-03-29 22:17
2002.08.08
Про пиксели - 2


1-24036
Андрусь
2002-07-19 13:00
2002.08.08
Непонятки с подгружаемыми модулями


3-23857
kserg@ukr.net
2002-07-19 13:46
2002.08.08
Хочу узнать мнение в подходах решения след.задачи


1-24005
msalex
2002-07-28 14:05
2002.08.08
Reach Edit: найти положение текстового курсора по положению кур.


4-24283
Uri
2002-05-28 15:09
2002.08.08
MS Office Panel