Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не закрывается 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо