Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
3-23938
roadrunner
2002-07-18 16:19
2002.08.08
Delphi и 1С


3-23950
Unhandled Exception
2002-07-19 09:16
2002.08.08
Вопрос относительно создания потомка TDataSet а


7-24240
Евгений!
2002-03-06 19:44
2002.08.08
Как добавить свой пункт в контекстное меню IE и ...


7-24245
Sergm
2002-05-21 23:48
2002.08.08
Работа с MS WORD из DELPHI 6 SP2


3-23942
Weare
2002-07-18 11:50
2002.08.08
Не открывается таблица...




   Наверх