Subject | Re: [IBO] Copy entire records without specifying the fields? IB_Datapump? |
---|---|
Author | John vd Waeter |
Post date | 2006-12-06T20:32:56Z |
Woody wrote:
At the moment I kinda use this approach, using commits every 100
records. As Jason mentions, the buffered data now gets copied which
would not be necessary when using the datapump, so I hope he has some
minutes to show some example code...
Thanks for your example!
Kind regards,
John
> From: "John vd Waeter" <john@...>Hi Woody,
>
>>I know you're quite busy getting the IBO-update finished, but could you
>>point me in a direction: how do I connect the datapump to 2 databases A
>>and B and how can I make it insert records from A.Table into B.table?
>
>
> It may not be what you want because it would be slower, but, here is a
> routine I use when I want to copy from one table to another. It doesn't
> matter where the tables reside. Just create the queries using the right
> select/insert statements and this will work:
>
> function CopyRecord(T1, T2: TIB_Query): boolean;
> var
> x: integer;
>
> begin
> try
> if not (T2.State in [dssEdit, dssInsert]) then
> T2.Edit;
> for x := 0 to T1.FieldCount - 1 do
> try
> if T2.FindField(T1.Fields[x].FieldName) <> nil then
> if T1.Fields[x].IsNull then
> T2.FieldByName(T1.Fields[x].FieldName).Clear
> else
> T2.FieldByName(T1.Fields[x].FieldName).Value :=
> T1.Fields[x].Value;
> except
> // eating any exceptions, dangerous but we don't care here...
> end;
> Result := True;
> except
> raise;
> end;
> end;
>
> You can use this as you loop through the source dataset and call it on each
> record. If you don't call insert on the destination dataset, this function
> assumes you want to edit the record. You can change that to whatever you
> want or leave it as is.
>
At the moment I kinda use this approach, using commits every 100
records. As Jason mentions, the buffered data now gets copied which
would not be necessary when using the datapump, so I hope he has some
minutes to show some example code...
Thanks for your example!
Kind regards,
John