Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как явно скопировать Recordset ??? ADOint.Recordset.Clone делает это неявно 
:(
    Опции темы
CROTishka
Дата 28.9.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



Что необходимо сделать - есть рекордсет, его надо скопировать в другой.

Цитата

  _RecordsetDisp = dispinterface
    .......
    function Clone(LockType: LockTypeEnum)
    ......
  end


делает это неявно. т.е. присваивает только ссылку на объект. и изменения в "скопированном" датасене приводят к изменениям в начальном.

после поисков в инете нашёл следующее:
Цитата

Contrary to popular belief, Recordset.Clone doesn't actually clone the recordset. It doesn't actually create a new object in memory - it simply returns a reference to the original recordset with the option of making the reference read-only. To verify this claim, simply delete a record from the cloned recordset and you will see that the .RecordCount on the original recordset also decreases.

So how do you actually make a true clone of the recordset with no dependencies or dangling references? One way is to save the recordset to file via the .Save method and then read it into another recordset. However, this method is very costly and time-consuming because ADO has to write the entire recordset structure, including field types and every property and every piece of data to disk. The proper answer is in the rarely used ADODB.Stream object. It turns out that you can save the entire recordset to this object (which is in memory) and then restore to another recordset. Check out the code below. 


источник:
http://www.vbrad.com/article.aspx?id=12 

но у рекордсета не нашёл ни метода сохранения в стрим, ни загрузки из стрима.
подскажите пожалуйста, как это сделать по-нормальному? 
(не копировать же его построчно?) 
PM MAIL   Вверх
Romikgy
Дата 28.9.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



видать ручками скопировать структуру.... а потом пробежаться по записям, или проще заюзать скюэл если возможно....


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
CROTishka
Дата 30.9.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



Цитата

видать ручками скопировать структуру.... а потом пробежаться по записям

Ну, это как-то не очень-то красиво, и по времени дольше гораздо.
Цитата

проще заюзать скюэл если возможно....

А это вообще ни в какие ворота не лезет - ещё 1 запрос гонять, если он уже есть...
к тому же в сете уже могут быть изменения
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1278 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.