hencker Postado Dezembro 8, 2006 Denunciar Share Postado Dezembro 8, 2006 Estou tentando transferir uns dados de um banco antigo para um novo banco da seguinte forma: procedure TfrmPrincipal.BBMigrarClick(Sender: TObject); begin DMMigrator.TAntiga.First; while not DMMigrator.TAntiga.Eof do begin DMMigrator.TNova.Append; DMMigrator.TNovaPROTOCOLONRO.Value := DMMigrator.TAntigaProtocoloNro.Value; DMMigrator.TNovaPROTOCOLOLIVRONRO.Value := DMMigrator.TAntigaProtocoloLivroNro.Value; DMMigrator.TNovaPROTOCOLOFOLHANRO.Value := DMMigrator.TAntigaProtocoloFolhaNro.Value; DMMigrator.TNovaPROTOCOLODATA.Value := DMMigrator.TAntigaProtocoloData.Value; DMMigrator.TNovaPROTESTOTIPO.Value := DMMigrator.TAntigaProtestoTipo.Value; DMMigrator.TNovaTITULONATUREZA.Value := DMMigrator.TAntigaTituloNatureza.Value; DMMigrator.TNovaTITULONATUREZAABR.Value := DMMigrator.TAntigaTituloNaturezaAbr.Value; DMMigrator.TNovaTITULONRO.Value := DMMigrator.TAntigaTituloNro.Value; DMMigrator.TNovaTITULOVECTO.Value := DMMigrator.TAntigaTituloVecto.Value; DMMigrator.TNovaTITULOEMISSAO.Value := DMMigrator.TAntigaTituloEmissao.Value; DMMigrator.TNovaTITULOVALOR.Value := DMMigrator.TAntigaTituloValor.Value; DMMigrator.TNovaPORTADORCNPJCPF.Value := DMMigrator.TAntigaPortadorCnpjCpf.Value; DMMigrator.TNovaPORTADORNOME.Value := DMMigrator.TAntigaPortadorNome.Value; DMMigrator.TNovaPORTADORENDERECO.Value := DMMigrator.TAntigaPortadorEndereco.Value; DMMigrator.TNovaPORTADORCEP.Value := DMMigrator.TAntigaPortadorCEP.Value; DMMigrator.TNovaPORTADORCIDADE.Value := DMMigrator.TAntigaPortadorCidade.Value; DMMigrator.TNovaPORTADORUF.Value := DMMigrator.TAntigaPortadorUF.Value; DMMigrator.TNovaCREDORCNPJCPF.Value := DMMigrator.TAntigaCredorCnpjCpf.Value; DMMigrator.TNovaCREDORNOME.Value := DMMigrator.TAntigaCredorNome.Value; DMMigrator.TNovaCREDORENDERECO.Value := DMMigrator.TAntigaCredorEndereco.Value; DMMigrator.TNovaCREDORCEP.Value := DMMigrator.TAntigaCredorCEP.Value; DMMigrator.TNovaCREDORCIDADE.Value := DMMigrator.TAntigaCredorCidade.Value; DMMigrator.TNovaCREDORUF.Value := DMMigrator.TAntigaCredorUF.Value; DMMigrator.TNovaOBSERVACOES.Value := DMMigrator.TAntigaObservacoes.Value; DMMigrator.TNovaDEVEDORNOME.Value := DMMigrator.TAntigaDevedorNome.Value; DMMigrator.TNovaDEVEDORENDERECO.Value := DMMigrator.TAntigaDevedorEndereco.Value; DMMigrator.TNovaDEVEDORCIDADE.Value := DMMigrator.TAntigaDevedorCidade.Value; DMMigrator.TNovaDEVEDORCEP.Value := DMMigrator.TAntigaDevedorCep.Value; DMMigrator.TNovaDEVEDORUF.Value := DMMigrator.TAntigaDevedorUf.Value; DMMigrator.TNovaDEVEDORCNPJCPF.Value := DMMigrator.TAntigaDevedorCnpjCpf.Value; DMMigrator.TNovaDEVEDORDOCID.Value := DMMigrator.TAntigaDevedorDocId.Value; DMMigrator.TNovaDEPOSITOVALOR.Value := DMMigrator.TAntigaDepositoValor.Value; DMMigrator.TNovaCUSTASTOTAL.Value := DMMigrator.TAntigaCustasTotal.Value; DMMigrator.TNovaDISTRIBUICAONRO.Value := DMMigrator.TAntigaDistribuicaoNro.Value; DMMigrator.TNovaDISTRIBUICAOORDEM.Value := DMMigrator.TAntigaDistribuicaoOrdem.Value; DMMigrator.TNovaDISTRIBUICAOCARTORIO.Value := DMMigrator.TAntigaDistribuicaoCartorio.Value; DMMigrator.TNovaOPERADOR.Value := DMMigrator.TAntigaOperador.Value; DMMigrator.TNovaDATAOP.Value := DMMigrator.TAntigaDataOp.Value; DMMigrator.TNovaCUSTASDISTRIBUICAO.Value := DMMigrator.TAntigaCustasDistribuicao.Value; DMMigrator.TNovaCUSTASDILIGENCIA.Value := DMMigrator.TAntigaCustasDiligencia.Value; DMMigrator.TNovaSITUACAOCODIGO.Value := DMMigrator.TAntigaSituacaoCodigo.Value; DMMigrator.TNovaSITUACAO.Value := DMMigrator.TAntigaSituacao.Value; DMMigrator.TNovaDISTRIBUIDOR_ANOTACAO.Value := DMMigrator.TAntigaDISTRIBUIDOR_ANOTACAO.Value; DMMigrator.TNova.ApplyUpdates; end; DMMigrator.TAntiga.Next; end; Porém ao invés de mandar todos os dados da tabela antiga para a nova ele copia infinitas vezes o primeiro registro do banco antigo...Alguém sabe o que está errado, além do meu QI? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Dezembro 8, 2006 Denunciar Share Postado Dezembro 8, 2006 hencker, passe o Next para dentro do begin...end do while DMMigrator.TNovaDISTRIBUIDOR_ANOTACAO.Value := DMMigrator.TAntigaDISTRIBUIDOR_ANOTACAO.Value; DMMigrator.TNova.ApplyUpdates; DMMigrator.TAntiga.Next; // **** <=== AQUI end; end; Uma dica: Se os campos da tabela de origem e de destino tem exatamente o memo nome, simplifique um pouco o código e minimize a digitação (tem campo pra caramba, ufa!!!) utilizando for com a propriedade Fields e with...do procedure TfrmPrincipal.BBMigrarClick(Sender: TObject); var Idx :Integer; Field :TField; begin with DMMigrator do begin TAntiga.First; while not TAntiga.Eof do begin TNova.Append; for Idx := 0 to TAntiga.Fields.Count -1 do begin Field := TNova.FindField(TAntiga.Fields[Idx].FieldName); if Assigned(Field) then Field.Assign(TAntiga.Fields[Idx]); end; TNova.ApplyUpdates; TAntiga.Next; end; end; end;[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
hencker
Estou tentando transferir uns dados de um banco antigo para um novo banco da seguinte forma:
Porém ao invés de mandar todos os dados da tabela antiga para a nova ele copia infinitas vezes o primeiro registro do banco antigo...
Alguém sabe o que está errado, além do meu QI?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.