![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
данные из ADODataSet пропадают после закрытия соединения, ПОЧЕМУ? [D6]
DmTM © (2003-10-30 12:59:00)
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?
DmTM (2003-10-31 07:30:00) [1]
to Delirium: а ведь работает
блин, вот всегда у меня так
вариант
DS.Connection:=nil;
был с самого начала, только у меня довольно сложные классы над
TADODataSet и TADOConnection
а я, блин, не к тому типу приводил указатель!
а уже и клонирование реализовал, блин и сохранение состояния
ладно, оптимизируем
всем спасибо
Delirium (2003-10-30 15:04:00) [2]
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-30 14:56:00) [3]
>DataSet это не отдельный обьект. (это иллюзия созданная дельфями ;о))
ага! я так и думал! спасибо
вобщем-то давно решил проблему клонированием,
но сегодня что-то рассердился
НО, если посмотреть на АДО.НЕТ
там вроде как можно такое, если не ошибаюсь?
sniknik (2003-10-30 14:49:00) [4]
просто хороший тон, закрывать за собой все что наоткрывал. если тебе нужны датные и после закрытия конекта позаботься о их сохранности. (clone, ClientDataSet могут помоч).
кстати, DataSet это не отдельный обьект. (это иллюзия созданная дельфями ;о))
если у тебя стоит офис найди файл ADO210.CHM на своей машине и почитай (я бы положил сюда структуру но она в картинке там а переписывать влом)
DmTM (2003-10-30 14:24:00) [5]
А набор данных, который уже получен, тут при чем?
Ну и пускай себе закрывается соединение. И уничтожается сам объект соединения. DS - это же отдельный объект, который хранит указатель (= номер ячейки в памяти) на соединение.
Вот я и спрашиваю ПОЧЕМУ и ЗАЧЕМ закрывать все наборы данных.
тут похоже что-то с особенностями com-объектов, но я про них недостаточно знаю
sniknik (2003-10-30 14:02:00) [6]
DmTM (30.10.03 13:51) [2]
ты закрываеш обьект на который указывает указатель, и после удивляешся что по второй копии указателя произошло то же самое?
вот это действительно удивительно, ПОЧЕМУ ты удивляешся?
DmTM (2003-10-30 13:51:00) [7]
Именно об этом. ПОЧЕМУ?
и использование указателя не помогает
analyser (2003-10-30 13:46:00) [8]
Если под: "соединение прихватывает с собой все наборы данных которые получены через него" понимается, что закрываются все НД, ассоциированные с Connection, то ответ в Help:
Call Close to disconnect from the source of database information. Before the connection component is deactivated, all associated datasets are closed.
Sorry, Если речь о другом...