![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не закрывается DataSet [D7, Access]
Tornado © (2007-02-01 15:59:00)Использую ADODataSet, подключен к таблице (Access) через ADOConnection. При загрузке программы он программно открывается. В грид загружается таблица, все нормально. При попытке закрыть его (ADODataSet.Activ := False) вылетает ошибка: "Cannot perform this operation on a closed dataset"
Но факт в том что датасет то открыт! Проверял так:
If DatMod.tbPhone.State = dsInactive Then
ShowMessage('Open!') ;
else
ShowMessage('Close!');
end;
Показывает Open
Как побороть?
MsGuns (2007-02-03 14:33:00) [1]>Tornado © (01.02.07 16:01) [1]
>If DatMod.tbPhone.State = dsInactive Then
Inactive" в переводе на русский означает утверждение"НЕактивный",
а вовсе не вопрос"Активный ли ?"
Читайте хотя бы словари прежде чем задавать вопросы
ЮЮ (2007-02-03 10:08:00) [2]
> При попытке закрыть его (ADODataSet.Activ := False) вылетает
> ошибка: "Cannot perform this operation on a closed dataset
Скорей всего он успешно закрывается, а в каком-то обработчике идет к нему обращение. В этом случае надо не ShowMessage вставлять в код, а в отладчике смотредь в каком месте идет обращение к DataSet-у
> Но факт в том что датасет то открыт! Проверял так:
Открыт в том месте, где ты вставил код. Но ты же его, говоришь закрыл.
Anatoly Podgoretsky (2007-02-01 19:56:00) [3]> Tornado (01.02.2007 15:59:00) [0]
Попробуй поменять местами строчки
ShowMessage('Open!') ;
ShowMessage('Close!');
Тогда будет правильно работать.
sniknik (2007-02-01 16:15:00) [4]пофигу хоть 10 раз подряд закрывай... там при установке активности есть проверка (типа if Active <> Value then ...)
глюк происходит от твоих собственных обработчиков какихто событий... либо без всяких событий обращаешься к датасету, выполняешь неверную операцию для закрытого...
Val (2007-02-01 16:06:00) [5]раз показывает опен, значит DatMod.tbPhone.State <> dsInactive :) пошаговая проверка отсутствует? ;)
Desdechado (2007-02-01 16:05:00) [6]проверяй
ADODataSet.Active = False
Tornado (2007-02-01 16:01:00) [7]Тьфу ты перепутал в предыдущем примере, вот так правильно :)
If DatMod.tbPhone.State = dsInactive Then
ShowMessage('Close!') ;
else
ShowMessage('Open!');
end;
Показывает Open