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

Вниз

Перенос данных из одной БД в другую   Найти похожие ветки 

 
123-ий ©   (2009-02-06 09:04) [0]

Выдираю записи из одной таблицы. Имею в результате заполненный DataSet. Создаю новый DataSet, State которого назначаю dsInsert.

 TmpDataSet := TADOQuery.Create(self);
 TmpDataSet.Insert;
 ....  // Вот здесь надо каким то образом перенести записи из заполненного DataSet"а во вновь созданный

Далее указатель на вновь созданный TmpDataSet передается в функцию, которая выполняет вставку с помощью транзакции.
Каким образом можно вставить эту кучку записей?


 
Sergey13 ©   (2009-02-06 09:15) [1]

> Каким образом можно вставить эту кучку записей?

книжку прочитать. Хотябы одну. Или программиста пригласить.

ЗЫ: понимаю что неконструктивно отвечаю, но не могу сдержаться. 8-)


 
Сергей М. ©   (2009-02-06 09:35) [2]


> Каким образом можно вставить эту кучку записей?


Для каждой "штучки" из этой "кучки" следует выполнить отдельную последовательность TmpDataSet.Insert ..TmpDataSet.Post


 
123-ий ©   (2009-02-06 09:38) [3]


> Сергей М. ©   (06.02.09 09:35) [2]

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


 
Сергей М. ©   (2009-02-06 09:39) [4]


> 123-ий ©   (06.02.09 09:38) [3]


Околесицу ты несешь)


 
123-ий ©   (2009-02-06 09:41) [5]


> Сергей М. ©   (06.02.09 09:39) [4]

дык а че неправильно то? я просто третий день шаманю, уже устал ацки, мозг подвисает... =)


 
123-ий ©   (2009-02-06 09:46) [6]


> Сергей М. ©   (06.02.09 09:39) [4]

там вообще вот как (в функции той, которая данные в БД вставляет транзакцией):


if DataSet.Recordset.Status = 1 then
 // Вставка новых записей в БД


То есть суть моей проблемы в том, что мне необходимо передать в эту функцию заполненный датасет, рекордсет которого равен единице, то бишь
New record исходя из http://www.devguru.com/Technologies/ado/QuickRef/recordset_status.html


 
Сергей М. ©   (2009-02-06 09:48) [7]

function КотраяВыполняетВставкуСПомошьюТранзакции (Откуда, Куда: TADODataset): SomeResult;
begin
 СтартТА
   Для каждой записи из Откуда делать
      Куда.Insert;
        Заполнить поля новой Куда-записи из полей текущей Откуда
-записи
       Куда.Post;        
 КоммитТА

end;


 
123-ий ©   (2009-02-06 09:52) [8]


> Сергей М. ©   (06.02.09 09:48) [7]

ну вот видимо придется таки переделать эту функцию, а хотелось ее не трогать. ладно, буду пробовать предложенный вариант.


 
123-ий ©   (2009-02-06 09:58) [9]


> 123-ий ©   (06.02.09 09:52) [8]

поясню, почему не хотел трогать. эта функция написана до меня, причем написана через не поймешь какое место. но через это же место она работает. :) и лучше на нее не дышать =)))


 
Сергей М. ©   (2009-02-06 10:14) [10]


> у этого датасета статус должен быть dsInsert


Это кто сказал, функция та самая ?


 
Плохиш ©   (2009-02-06 11:17) [11]

Удалено модератором


 
123-ий ©   (2009-02-06 11:37) [12]


> Это кто сказал, функция та самая ?

я не совсем правильно сказал. Не у датасета статус должен быть dsInsert, а у DataSet.RecordSet"а статус должен быть 1. Потому что в той функции в зависимости от этого статуса происходят определенные действия (апдейт, инсерт и пр.). А я не знаю, какими методами можно изменить этот статус. Вручную неполучилось ибо readonly.


 
Сергей М. ©   (2009-02-06 11:42) [13]


> 123-ий ©   (06.02.09 11:37) [12]


А ты зачем вообще "выдирал записи из одной таблицы" и "имел в результате заполненный DataSet" ?

Разве не все без исключения записи из этого НД должны быть скопированы куда-то там в контексте той самой т/акции ?


 
123-ий ©   (2009-02-06 13:26) [14]


> Сергей М. ©   (06.02.09 11:42) [13]
там вот в чем фишка. записи выдираются из таблицы на localhost"е, а потом их транзакцией надо отправить на БД, которая удаленная. а то, конечно, я бы их хранимкой скопировал.


 
Сергей М. ©   (2009-02-06 14:35) [15]


> 123-ий ©   (06.02.09 13:26) [14]


Я не спросил "откуда", я спросил зачем)
Т.е. каков был критерий отбора записей при "выдирании" их в НД..



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
15-1234179927
dark_volk
2009-02-09 14:45
2009.04.05
C++ Кто знает


15-1234120264
istok2
2009-02-08 22:11
2009.04.05
как создать достать базу вебсайтов интернета...


15-1234042050
Юрий
2009-02-08 00:27
2009.04.05
С днем рождения ! 8 февраля 2009 воскресенье


15-1231429204
NEWichok
2009-01-08 18:40
2009.04.05
Чем, и стоит ли, заменить Quick Reports?


1-1209384948
GreyWolf
2008-04-28 16:15
2009.04.05
Отладка такой ситуации