Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизИсключения Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c