-
Выдираю записи из одной таблицы. Имею в результате заполненный DataSet. Создаю новый DataSet, State которого назначаю dsInsert.
TmpDataSet := TADOQuery.Create(self);
TmpDataSet.Insert;
....
Далее указатель на вновь созданный TmpDataSet передается в функцию, которая выполняет вставку с помощью транзакции. Каким образом можно вставить эту кучку записей?
-
> Каким образом можно вставить эту кучку записей?
книжку прочитать. Хотябы одну. Или программиста пригласить.
ЗЫ: понимаю что неконструктивно отвечаю, но не могу сдержаться. 8-)
-
> Каким образом можно вставить эту кучку записей?
Для каждой "штучки" из этой "кучки" следует выполнить отдельную последовательность TmpDataSet.Insert ..TmpDataSet.Post
-
> Сергей М. © (06.02.09 09:35) [2]
аа, это конечно да, но не все так просто. когда датасет передается в ту функцию, которая выполняет вставку с помощью транзакции, у этого датасета статус должен быть dsInsert. поэтому видимо post выполнять нельзя.
-
> 123-ий © (06.02.09 09:38) [3]
Околесицу ты несешь)
-
> Сергей М. © (06.02.09 09:39) [4]
дык а че неправильно то? я просто третий день шаманю, уже устал ацки, мозг подвисает... =)
-
> Сергей М. © (06.02.09 09:39) [4]
там вообще вот как (в функции той, которая данные в БД вставляет транзакцией):
if DataSet.Recordset.Status = 1 then
То есть суть моей проблемы в том, что мне необходимо передать в эту функцию заполненный датасет, рекордсет которого равен единице, то бишь New record исходя из http://www.devguru.com/Technologies/ado/QuickRef/recordset_status.html
-
function КотраяВыполняетВставкуСПомошьюТранзакции (Откуда, Куда: TADODataset): SomeResult; begin СтартТА Для каждой записи из Откуда делать Куда.Insert; Заполнить поля новой Куда-записи из полей текущей Откуда -записи Куда.Post; КоммитТА
end;
-
> Сергей М. © (06.02.09 09:48) [7]
ну вот видимо придется таки переделать эту функцию, а хотелось ее не трогать. ладно, буду пробовать предложенный вариант.
-
> 123-ий © (06.02.09 09:52) [8]
поясню, почему не хотел трогать. эта функция написана до меня, причем написана через не поймешь какое место. но через это же место она работает. :) и лучше на нее не дышать =)))
-
> у этого датасета статус должен быть dsInsert
Это кто сказал, функция та самая ?
-
Удалено модератором
-
> Это кто сказал, функция та самая ?
я не совсем правильно сказал. Не у датасета статус должен быть dsInsert, а у DataSet.RecordSet'а статус должен быть 1. Потому что в той функции в зависимости от этого статуса происходят определенные действия (апдейт, инсерт и пр.). А я не знаю, какими методами можно изменить этот статус. Вручную неполучилось ибо readonly.
-
> 123-ий © (06.02.09 11:37) [12]
А ты зачем вообще "выдирал записи из одной таблицы" и "имел в результате заполненный DataSet" ?
Разве не все без исключения записи из этого НД должны быть скопированы куда-то там в контексте той самой т/акции ?
-
> Сергей М. © (06.02.09 11:42) [13] там вот в чем фишка. записи выдираются из таблицы на localhost'е, а потом их транзакцией надо отправить на БД, которая удаленная. а то, конечно, я бы их хранимкой скопировал.
-
> 123-ий © (06.02.09 13:26) [14]
Я не спросил "откуда", я спросил зачем) Т.е. каков был критерий отбора записей при "выдирании" их в НД..
|