Вниз
Скачать: CL | DM;

Не закрывается DataSet   Найти похожие ветки 

← →
Tornado ©   (2007-02-01 15:59) [0]

Использую 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

Как побороть?


← →
Tornado ©   (2007-02-01 16:01) [1]

Тьфу ты перепутал в предыдущем примере, вот так правильно :)

If    DatMod.tbPhone.State = dsInactive Then
ShowMessage("Close!")   ;
else  
ShowMessage("Open!");
end;

Показывает Open


← →
Desdechado ©   (2007-02-01 16:05) [2]

проверяй ADODataSet.Active = False


← →
Val ©   (2007-02-01 16:06) [3]

раз показывает опен, значит DatMod.tbPhone.State <> dsInactive :) пошаговая проверка отсутствует? ;)


← →
sniknik ©   (2007-02-01 16:15) [4]

пофигу хоть 10 раз подряд закрывай... там при установке активности есть проверка (типа if Active <> Value then ...)

глюк происходит от твоих собственных обработчиков какихто событий... либо без всяких событий обращаешься к датасету, выполняешь неверную операцию для закрытого...


← →
Anatoly Podgoretsky ©   (2007-02-01 19:56) [5]

> Tornado  (01.02.2007 15:59:00)  [0]

Попробуй поменять местами строчки

ShowMessage("Open!")   ;
ShowMessage("Close!");

Тогда будет правильно работать.


← →
ЮЮ ©   (2007-02-03 10:08) [6]


>  При попытке закрыть его (ADODataSet.Activ := False) вылетает
> ошибка: "Cannot perform this operation on a closed dataset

Скорей всего он успешно закрывается, а в каком-то обработчике идет к нему обращение. В этом случае надо не ShowMessage вставлять в код, а в отладчике смотредь в каком месте идет обращение к DataSet-у


> Но факт в том что датасет то открыт! Проверял так:

Открыт в том месте, где ты вставил код. Но ты же его, говоришь закрыл.


← →
MsGuns ©   (2007-02-03 14:33) [7]

>Tornado ©   (01.02.07 16:01) [1]
>If    DatMod.tbPhone.State = dsInactive Then

Inactive" в переводе на русский означает утверждение "НЕактивный",
а вовсе не вопрос "Активный ли ?"

Читайте хотя бы словари прежде чем задавать вопросы



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
15-1169537324
MsGuns
2007-01-23 10:28
2007.02.25
Выдвижная из стола клавиатура


2-1170572657
Observer
2007-02-04 10:04
2007.02.25
Asm and Delphi


2-1170362967
Pasha L
2007-02-01 23:49
2007.02.25
Считать буффер


15-1170300864
SerJaNT
2007-02-01 06:34
2007.02.25
Программа для организации телеконференций по сети


15-1170601610
Ricks
2007-02-04 18:06
2007.02.25
Куда девался пункт меню Project->Resources???




   Наверх