Форум: "Базы";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Внизданные из 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c