Конференция "Прочее" » Перенос данных из одной БД в другую
 
  • 123-ий © (06.02.09 09:04) [0]
    Выдираю записи из одной таблицы. Имею в результате заполненный DataSet. Создаю новый DataSet, State которого назначаю dsInsert.

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


    Далее указатель на вновь созданный TmpDataSet передается в функцию, которая выполняет вставку с помощью транзакции.
    Каким образом можно вставить эту кучку записей?
  • Sergey13 © (06.02.09 09:15) [1]
    > Каким образом можно вставить эту кучку записей?

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

    ЗЫ: понимаю что неконструктивно отвечаю, но не могу сдержаться. 8-)
  • Сергей М. © (06.02.09 09:35) [2]

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


    Для каждой "штучки" из этой "кучки" следует выполнить отдельную последовательность TmpDataSet.Insert ..TmpDataSet.Post
  • 123-ий © (06.02.09 09:38) [3]

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

    аа, это конечно да,  но не все так просто. когда датасет передается в ту функцию, которая выполняет вставку с помощью транзакции, у этого датасета статус должен быть dsInsert. поэтому видимо post выполнять нельзя.
  • Сергей М. © (06.02.09 09:39) [4]

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


    Околесицу ты несешь)
  • 123-ий © (06.02.09 09:41) [5]

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

    дык а че неправильно то? я просто третий день шаманю, уже устал ацки, мозг подвисает... =)
  • 123-ий © (06.02.09 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
  • Сергей М. © (06.02.09 09:48) [7]
    function КотраяВыполняетВставкуСПомошьюТранзакции (Откуда, Куда: TADODataset): SomeResult;
    begin
     СтартТА
       Для каждой записи из Откуда делать
          Куда.Insert;
            Заполнить поля новой Куда-записи из полей текущей Откуда
    -записи
           Куда.Post;        
     КоммитТА

    end;
  • 123-ий © (06.02.09 09:52) [8]

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

    ну вот видимо придется таки переделать эту функцию, а хотелось ее не трогать. ладно, буду пробовать предложенный вариант.
  • 123-ий © (06.02.09 09:58) [9]

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

    поясню, почему не хотел трогать. эта функция написана до меня, причем написана через не поймешь какое место. но через это же место она работает. :) и лучше на нее не дышать =)))
  • Сергей М. © (06.02.09 10:14) [10]

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


    Это кто сказал, функция та самая ?
  • Плохиш © (06.02.09 11:17) [11]
    Удалено модератором
  • 123-ий © (06.02.09 11:37) [12]

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

    я не совсем правильно сказал. Не у датасета статус должен быть dsInsert, а у DataSet.RecordSet'а статус должен быть 1. Потому что в той функции в зависимости от этого статуса происходят определенные действия (апдейт, инсерт и пр.). А я не знаю, какими методами можно изменить этот статус. Вручную неполучилось ибо readonly.
  • Сергей М. © (06.02.09 11:42) [13]

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


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

    Разве не все без исключения записи из этого НД должны быть скопированы куда-то там в контексте той самой т/акции ?
  • 123-ий © (06.02.09 13:26) [14]

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

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


    Я не спросил "откуда", я спросил зачем)
    Т.е. каков был критерий отбора записей при "выдирании" их в НД..
 
Конференция "Прочее" » Перенос данных из одной БД в другую
Есть новые Нет новых   [134454   +43][b:0][p:0.001]