Copiar dados de um Client para outro Client de outro banco
02/04/2014
0
Preciso replicar todos os dados de uma tabela Firebird que estão num clientdataset para outro banco firebird.
Até consigo atribuir o "Data" entre clients mas não grava no segundo banco.
- dm contem o banco origem
- dmLocal contem o banco destino
dmLocal.cds_aux1.data := dm.cds_aux1.Data ;
dmLocal.cds_aux1.ApplyUpdates(0);
Notei que o ChangeCount do dmLocal está como zero.
Poderiam me dar uma ajuda?
att
Mario
Mario Inacio
Posts
22/04/2014
Cauê Nishijima
22/04/2014
Cauê Nishijima
23/04/2014
Mario Inacio
Essa rotina é pra atualizar o PAF mais rapidamente.
A maior tabela possui 20000 registros, as demais são pequenas mas essa demora muito fazendo um looping.
att
23/04/2014
Cauê Nishijima
function TransfereDadosEntreTabelas(cdsOrigem: TClientDataSet; nomeTabelaDestino: string; conexaoDestino: TSQLConnection):Boolean; var TabelaAuxiliar: TSQLTable; ClientDataSet: TClientDataSet; DataSetProvider: TDataSetProvider; I, n: integer; begin try TabelaAuxiliar := TSQLTable.Create(nil); TabelaAuxiliar.SQLConnection := conexaoDestino; TabelaAuxiliar.TableName := nomeTabelaDestino; TabelaAuxiliar.Open; DataSetProvider := TDataSetProvider.Create(nil); DataSetProvider.DataSet := TabelaAuxiliar; DataSetProvider.Name := 'dsp'; ClientDataSet := TClientDataSet.Create(nil); ClientDataSet.ProviderName := 'dsp'; ClientDataSet.FieldDefs.Clear; ClientDataSet.Close; for I := 0 to cdsOrigem.FieldCount - 1 do begin ClientDataSet.FieldDefs.Add(cdsOrigem.Fields[I].FieldName, cdsOrigem.Fields[I].DataType, cdsOrigem.Fields[I].Size, cdsOrigem.Fields[I].Required); end; ClientDataSet.CreateDataSet; ClientDataSet.Open; cdsOrigem.First; while not cdsOrigem.Eof do begin ClientDataSet.Append; for I := 0 to cdsOrigem.FieldCount - 1 do begin ClientDataSet.Fields[I].Value := cdsOrigem.Fields[I].Value; end; cdsOrigem.Next; end; if not(ClientDataSet.IsEmpty) then begin DataSetProvider.ApplyUpdates(ClientDataSet.Delta, -1, n); Result := True; end else Result := False; except Result:= False; end; end;
26/04/2014
Mario Inacio
Sua solução foi muita eficaz.
Funcionando muito bem.
Obrigado, abc
27/04/2014
Cauê Nishijima
Abraço
Clique aqui para fazer login e interagir na Comunidade :)