Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-23936
Filat
2002-07-17 17:20
2002.08.08
Два вопроса по созданию таблиц


7-24254
Alex_MIB2
2002-05-22 21:22
2002.08.08
Как отправить на печать имеющийся *.тхт файл?


3-23937
lak_b
2002-07-18 16:15
2002.08.08
IB & Delphi


1-24083
Dmitry Zhelobaev
2002-07-25 14:13
2002.08.08
Работа с модемом?


3-23938
roadrunner
2002-07-18 16:19
2002.08.08
Delphi и 1С





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский