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

Вниз

Как быстро перекачать данные между двумя DataSet?   Найти похожие ветки 

 
yaJohn ©   (2002-10-10 15:23) [0]

Есть 2 TDataSet с полностью совпадающими полями. Нужно все записи из первого дописать (append) во второй.
Тупой цикл по источнику с Insert в приемнике и циклом по всем полям работает недопустимо медленно. Или это я торможу?

Мда, для справки: источник - ClientDataSet, приемник - ADODataSet (или, возможно, ADOQuery).

Заранее спасибо.


 
sniknik ©   (2002-10-10 15:27) [1]

Clone не пробовал? может пройдет.

Duplicates another dataset in the calling component
procedure Clone(Source: TCustomADODataSet; LockType: TLockType = ltUnspecified);


 
yajohn@web.de   (2002-10-10 15:43) [2]

No. Starie dannie v istochnike doljni ostatsia. I istochnik - TClientDataSet.


 
Johnmen ©   (2002-10-10 15:54) [3]

>Нужно все записи из первого дописать (append) во второй.
Наводящий вопрос :
датасета или таблицы, стоящей за датасетом ???


 
Hawk2   (2002-10-10 16:22) [4]

А не проще SQL запросом?


 
yaJohn ©   (2002-10-10 16:44) [5]

Из клиент-датасета (который получат данные от DCOM сервера) закачать в Access таблицу.
Разные ДБ, поэтому на SQL не выйдет :(


 
Johnmen ©   (2002-10-10 16:49) [6]

Тогда придется построчно, сканируя ClientDataSet.


 
sniknik ©   (2002-10-10 16:56) [7]

yaJohn © Разные ДБ.
Насколько разные? прекрестные запросы MSSQL, Accsess, dbf, Exell и тд. все что имеет OLE DB провайдера, вполне возможны. и применяются, кое где с успехом :-).


 
yaJohn ©   (2002-10-10 17:08) [8]

Вах! На сервере лежит DBF, из которого нужны - сотня-тысяча записей. Весь DBF - немерянно жирный. Сотню-тысячу записей нужно дописать к таблице в mdb. Доступ к серверу - по TCP-IP, возможно через инет.
Посему, на сервере стоит МИДАС сервер, который читает DBF и возвращает результат клиенту. Клиент пишет их в mdb через ADO.
Интуиция мне подсказывает, что прямой АДО коннект к треклятому ДБФ - не лучший путь в данном случае.
Да, собственно о проблемме. Прокачка данных по сети просходит примерно в 10 раз быстрее, чем их локальное сохранение в mdb. ;(((


 
sniknik ©   (2002-10-10 17:15) [9]

интуиция нигогда не лжот, но иногда залуждается :-) в меру сил и возможностей.

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


 
MsGuns ©   (2002-10-10 17:17) [10]

А почему бы тупо не воспользоваться компонентами DBE и хорошим проверенным BatchMove`ом ?
Или я что-то недопонимаю ?


 
yaJohn ©   (2002-10-10 18:09) [11]

Я написал длинную тираду, но передумал и скажу кратко: mdb+bde=головная боль. И у юзера и у админа и у меня.
Всем , конечно, спасибо за помощь, но вернувшись к оригинальной постановке вопроса: как дописать один ТDataSet к другому?


 
Best Before 2024   (2002-10-10 18:17) [12]

Похоже, что в цикле по записям.
Мб, InsertRecord/Appendrecord быстрее цикла по полям +
LockType := ltBatchOptimistic;
+
UpdateBatch


 
Лена   (2002-10-11 09:28) [13]

insert into table1
select *
from table2
where условия

Если поля в таблицах действительно идентичны


 
LordOfSilence ©   (2002-10-11 11:09) [14]

Честно признаюсь, сам не пробовал никогда то,
что сейчас собираюсь предложить. Но, возможно,
это Вас натолкнет на дальнейшие продуктивные мысли.

TClientDataSet.SaveToFile( "MyFile.xml", dfXML );
TADODataSet.LoadFromFile( "MyFile.xml" );

Идея в том, что, вроде бы, оба типа этих
DataSet`ов поддерживают XML-формат.


 
Best Before 2024   (2002-10-11 12:53) [15]

2 LordOfSilence © (11.10.02 11:09)
>>TClientDataSet.SaveToFile( "MyFile.xml", dfXML );
>>TADODataSet.LoadFromFile( "MyFile.xml" );
Тогда потеряются данные в TADODataSet, а надо добавлять!





 
LordOfSilence ©   (2002-10-11 12:59) [16]

To Best Before 2024
Хорошо, согласен.
Но ведь можно закачать во "временный" TADODataSet, а уже
из него перекинуть чем-то вроде "Select/Insert... into/from..."
в реальный.



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

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

Наверх




Память: 0.5 MB
Время: 0.009 c
1-101236
Прохожий
2002-10-21 21:53
2002.10.31
Lib-файлы


14-101474
Skier
2002-10-10 11:44
2002.10.31
Мужчина и Женщина


1-101309
brestmarket
2002-10-19 16:54
2002.10.31
В WebBrowser перекрытие обработки в WebBrowser1BeforeNavigate2


3-101104
Dark Hunter
2002-10-09 17:33
2002.10.31
Текстовый поиск в MS SQL Server


1-101250
Dimich1978
2002-10-22 09:07
2002.10.31
Где можно посмотреть пример для просмотра удаленного реестра.