Текущий архив: 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.49 MB
Время: 0.014 c