Форум: "Прочее";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
ВнизПеренос данных из одной БД в другую Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c