Copiar dados de um Client para outro Client de outro banco
Bom dia,
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
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
Curtidas 0
Respostas
Mario Inacio
02/04/2014
up up
GOSTEI 0
Cauê Nishijima
02/04/2014
Qual a possibilidade de fazer um looping? São muitos dados?
GOSTEI 0
Cauê Nishijima
02/04/2014
Qual a possibilidade de fazer um looping? São muitos dados?
GOSTEI 0
Mario Inacio
02/04/2014
Bom dia,
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
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
GOSTEI 0
Cauê Nishijima
02/04/2014
Tenta usar essa função que criei e ver se fica rápido:
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;
GOSTEI 0
Mario Inacio
02/04/2014
Bom dia Caue,
Sua solução foi muita eficaz.
Funcionando muito bem.
Obrigado, abc
Sua solução foi muita eficaz.
Funcionando muito bem.
Obrigado, abc
GOSTEI 0
Cauê Nishijima
02/04/2014
Que bom Mario, qualquer outra dúvida estamos ai!
Abraço
Abraço
GOSTEI 0