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

Вниз

данные из ADODataSet пропадают после закрытия соединения, ПОЧЕМУ?   Найти похожие ветки 

 
DmTM   (2003-10-30 12:59) [0]

var
CNN: TADOConnection;
PCNN: TADOConnection;
DS: TADODataSet;
begin
CNN:=TADOConnection.Create(.....
создали, открыли
PCNN:=CNN; //запомнили указатель

DS.Connection:=PCNN;
//поработали, получили данные

CNN.Close;
CNN.Free;

Почему соединение прихватывает с собой все наборы данных которые получены через него? Я ожидал что смогу работать (чтение) с полученными данными?

Я конечно видел CNN.Commands(i) и прочее,
но как тогда возможно DS:=TADODataSet.Create?


 
analyser   (2003-10-30 13:46) [1]

Если под: "соединение прихватывает с собой все наборы данных которые получены через него" понимается, что закрываются все НД, ассоциированные с Connection, то ответ в Help:

Call Close to disconnect from the source of database information. Before the connection component is deactivated, all associated datasets are closed.

Sorry, Если речь о другом...


 
DmTM   (2003-10-30 13:51) [2]

Именно об этом. ПОЧЕМУ?
и использование указателя не помогает


 
sniknik ©   (2003-10-30 14:02) [3]

DmTM (30.10.03 13:51) [2]
ты закрываеш обьект на который указывает указатель, и после удивляешся что по второй копии указателя произошло то же самое?
вот это действительно удивительно, ПОЧЕМУ ты удивляешся?


 
DmTM   (2003-10-30 14:24) [4]

А набор данных, который уже получен, тут при чем?
Ну и пускай себе закрывается соединение. И уничтожается сам объект соединения. DS - это же отдельный объект, который хранит указатель (= номер ячейки в памяти) на соединение.
Вот я и спрашиваю ПОЧЕМУ и ЗАЧЕМ закрывать все наборы данных.

тут похоже что-то с особенностями com-объектов, но я про них недостаточно знаю


 
sniknik ©   (2003-10-30 14:49) [5]

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

кстати, DataSet это не отдельный обьект. (это иллюзия созданная дельфями ;о))
если у тебя стоит офис найди файл ADO210.CHM на своей машине и почитай (я бы положил сюда структуру но она в картинке там а переписывать влом)


 
DmTM   (2003-10-30 14:56) [6]

>DataSet это не отдельный обьект. (это иллюзия созданная дельфями ;о))

ага! я так и думал! спасибо
вобщем-то давно решил проблему клонированием,
но сегодня что-то рассердился

НО, если посмотреть на АДО.НЕТ
там вроде как можно такое, если не ошибаюсь?


 
Delirium ©   (2003-10-30 15:04) [7]

var
CNN: TADOConnection;
PCNN: TADOConnection;
DS: TADODataSet;
begin
CNN:=TADOConnection.Create(.....
DS.Connection:=CNN;
DS.Open; //получили данные
DS.Connection:=nil; //коннекшен оборвали, а данные остались
CNN.Close;
CNN.Free;

DS. ... // поработали


 
DmTM   (2003-10-31 07:30) [8]

to Delirium: а ведь работает

блин, вот всегда у меня так
вариант
DS.Connection:=nil;
был с самого начала, только у меня довольно сложные классы над
TADODataSet и TADOConnection
а я, блин, не к тому типу приводил указатель!

а уже и клонирование реализовал, блин и сохранение состояния

ладно, оптимизируем

всем спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
3-65787
ksan
2003-10-29 21:23
2003.11.20
серийный номер


3-65703
SasaR
2003-10-30 10:39
2003.11.20
Yaffi Personal


1-65886
Дубинин Алексей
2003-11-08 22:48
2003.11.20
Hint как в XP


1-65995
Denisiy
2003-11-10 15:25
2003.11.20
Звуковой сигнал с MessageDlg


1-65827
BlackTiger
2003-11-11 17:25
2003.11.20
Как на канве вывести текст вертикально?