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

Вниз

Table:=false; => Error :(   Найти похожие ветки 

 
Leech   (2004-02-13 10:52) [0]

По событию закрытия формы выполняю Table:=false;, что вызывает ошибку "Table: Cannot perform this operation on a closed dataset"... Что вызывает ошибку?


 
Vlad ©   (2004-02-13 10:55) [1]


> Table:=false

:-)
Не нужно этого делать. После закрытия формы таблицу закроют и высвободят память без твоего участия.


 
Leech   (2004-02-13 10:59) [2]

Прошу прощения... Table.Active:=False;
Просто дело в том, что не в первый раз пишу приложение для БД... всегда, при открытии формы, Table.Active:=True;, а при закрытии - Table.Active:=False;... и всегда всё было в порядке...


 
Жук ©   (2004-02-13 11:02) [3]

if Table.Active then Table.Active:=False;


 
Leech   (2004-02-13 11:10) [4]

2 Жук ©
Так в том и дело, что при закрытии свойство Active - "истина"... Так что по-прежнему это вызывает ошибку...
Я проверил, не нахожусь ли в режиме редактировая перед установкой значения Active в "ложь" - нет, тоже всё нормально...


 
Digitman ©   (2004-02-13 11:14) [5]


> Leech


ошибка не здесь
если НД закрыт, то Table.Active:=False просто ничего не делает и подобного исключения вызвать не может

где-то в обработчиках каких-то событий формы (или ее контролов) , которые возбуждаются уже после отработки Table.Active:=False , есть, очевидно, обращения к методам или св-вам этой Table, управляющим статусом этого НД или позиционирующим курсор НД .. например, методы Insert, Edit, Post, Delete и т.п. гарантированно вызовут подобное исключение при закрытом НД


 
Жук ©   (2004-02-13 11:19) [6]


> Digitman ©

В сабже говорится, что именно строчка Table.Active:=False даёт исключение. Я так понимаю, что трассировкой это выяснилось.
Но если порассуждать, то собака зарыта не здесь.


 
Leech   (2004-02-13 11:24) [7]

2 Digitman ©
Так я закрываю активность Table при событии формы "OnDestroy"... какое может быть ещё обращение к методам? Хотя во время выполнения и вызываю программно и Insert, и Edit, и Post, и Delete... Но как это может происходить после....


 
Leech   (2004-02-13 11:26) [8]

2 Жук ©
Да, я BreakPoint ставил на этой строке... Ошибка именно сдесь...


 
Vlad ©   (2004-02-13 11:29) [9]


> Leech (13.02.04 11:24) [7]

Проверь событие AfterClose таблицы. Может там происходит обращение к этому НД
А вобще, если сама таблица лежит на этой форме, то не нужно ее закрывать на OnDestroy, она сама закроется.


 
Johnmen ©   (2004-02-13 11:29) [10]

>Leech
>Ошибка именно сдесь...

Лично у меня такой уверенности нет.
Приведи код до и код после Table.Active:=False


 
Leech   (2004-02-13 11:31) [11]

Всё происходит нормально, если база пустая...


 
Leech   (2004-02-13 11:35) [12]

2 Johnmen ©
Кода после Table.Active:=False нет никакого...

2 Vlad ©
Сейчас гляну AfterClose...
"не нужно ее закрывать на OnDestroy, она сама закроется." Дело не в этом уже, а принципе ,чтоб разобраться, в чем проблема...


 
Digitman ©   (2004-02-13 11:35) [13]


> Leech (13.02.04 11:26) [8]
> Да, я BreakPoint ставил на этой строке... Ошибка именно
> сдесь...


приведи перечень имен событий формы и всех ее контролов, которые ты обрабатываешь и в обработчиках которых происходит обращение к методам/св-вам таблицы типа Edit, Insert, Post, Delete и т.п.


 
Val ©   (2004-02-13 11:40) [14]

>Leech (13.02.04 11:35) [12]
в чем проблема, собственно, описал Digitman ©. Просто найдите, где это у вас происходит.


 
Anatoly Podgoretsky ©   (2004-02-13 11:43) [15]

Leech (13.02.04 11:24) [7]
Да пожалуйста, например после
Table.Active:=False

Table.Last в любом другом месте.


 
Johnmen ©   (2004-02-13 11:44) [16]

>Leech (13.02.04 11:35) [12]
>Кода после Table.Active:=False нет никакого...

Это исчерпывающий ответ на уточняющий вопрос ???


 
Leech   (2004-02-13 11:51) [17]

В событие TFormMain.TableAfterClose вообще не заходим....


 
Leech   (2004-02-13 11:52) [18]

2 Anatoly Podgoretsky ©
Не понял...


 
Leech   (2004-02-13 11:54) [19]

Ха, если даже запустить программу, не делать никаких изменений и сразу закрыть (не переходя в Эдит моде, не вызывая "Пост", "Инсерт" и прочее), та же ошибка...


 
Val ©   (2004-02-13 12:01) [20]

>Leech (13.02.04 11:54) [19]
это истерика?


 
Leech   (2004-02-13 12:04) [21]

Нет, извиняюсь... при запуске программы происходят события, при которых я ставлю свойство Тейбла в Эдитмоде... закомментарил... всё нормально...


 
Nerv ©   (2004-02-13 12:07) [22]

Человек отказывается прислушиваться к советам, которых просил...


 
Leech   (2004-02-13 12:13) [23]

Тогда объясните мне...
Table.Cancel; отменят режим Table.Edit; так?
Почему тогда была ошибка?
А ведь я пробовал ставить Table.Cancel; перед Table.Active:=False


 
Vlad ©   (2004-02-13 12:17) [24]


> Leech (13.02.04 12:13) [23]


> Почему тогда была ошибка?

Это уже вопрос к твоей 17-й строке


 
Anatoly Podgoretsky ©   (2004-02-13 13:03) [25]

Leech (13.02.04 11:52) [18]
А чего не понятно, после того как ты закрыл, может произойти обращение в любом обработчике, их много, и даже после выхода из формы, но до ее уничтожения.



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

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

Наверх




Память: 0.52 MB
Время: 0.053 c
6-43728
SJ-79
2004-01-05 16:14
2004.03.14
E-mail


6-43722
kosha80
2004-01-06 17:09
2004.03.14
Как программно вызвать диалог


6-43708
Hkr
2004-01-08 03:57
2004.03.14
TraceRoute


3-43299
MicroWorld
2004-02-11 22:47
2004.03.14
Запрос на 4 поля


4-43957
rimd
2004-01-05 14:37
2004.03.14
CreateThread