Bom dia a todos

Estou fazendo uma rotina de importação que esta gerando problemas, 
pois apos importar os dados verifiquei que tinha preenchido todos os 
campos com um mesmo registro, "código" o primeiro do arquivo texto.

Tenho uma tabela com o mesmo layout do txt.

Os códigos ficaram assim: 

procedure TfrmImportacao.btnImportaClick(Sender: TObject);
var
  fArq: TextFile;      //Variável do Tipo Arquivo de Texto
  Caminho: string;     //Variável que armazenará o caminho
  Linha: string;       //Variável que vai armazena cada linha
  mTexto: TStringList; //Utilizada para contar as linhas a importar
  i: integer;          //variavel utilizada no contador de linhas 
Importadas
begin
  Caminho := editArquivo.Text; //Variável vai receber os dados do edit
  AssignFile(fArq, Caminho);
  ReSet(fArq);
  mTexto := TStringList.Create;
  try
    mTexto.LoadFromFile(Caminho);
    ProgressBar1.Max := mTexto.Count - 1;
    i := 0;
  finally
    mTexto.Free;
  end;
  while not Eof(fArq) do  //Enquanto não chegar ao fim do arquivo
  begin
    Application.ProcessMessages;
    Readln(farq, linha); //Lê a linha e posiciona o cursor na próxima
    Caption := 'Lendo Linha: ' + IntToStr(i) + ' de: ' + IntToStr
(ProgressBar1.Max);
    DM.cdsImportacao.Params.ParamByName('codigo').asString := Trim
(Copy(Linha, 1, 8));
    DM.cdsImportacao.Open;  //Abre o CDS
    //
    if DM.cdsImportacao.IsEmpty then //Se Não existir o registro
       DM.cdsImportacao.Append //Insira os dados da linha atual
    else //Senão, se o registro já existir
       DM.cdsImportacao.Edit; //Coloca em modo de edição para 
atualizar os campos
       //Aqui os campos recebem as linhas lidas
       DM.cdsImportacaocodigo.AsString       :=Trim(Copy(Linha, 1,  
8  ));
       DM.cdsImportacaonome.AsString         :=Trim(Copy(Linha, 12, 
20 ));
       DM.cdsImportacaoproduto.AsString      :=Trim(Copy(Linha, 24, 
20 ));
       DM.cdsImportacaocontato.AsString      :=Trim(Copy(Linha, 36, 
20 ));
       DM.cdsImportacaoemailcontato.AsString :=Trim(Copy(Linha, 52, 
20 ));
       DM.cdsImportacaocod_agente.AsString   :=Trim(Copy(Linha, 64, 
20 ));
       DM.cdsImportacaorua.AsString          :=Trim(Copy(Linha, 76, 
20 ));
       DM.cdsImportacaobairro.AsString       :=Trim(Copy(Linha, 88, 
20 ));
       DM.cdsImportacaocidade.AsString       :=Trim(Copy(Linha, 
100,20 ));
       DM.cdsImportacaonumero.AsString       :=Trim(Copy(Linha, 
112,20 ));
       DM.cdsImportacaocomplemento.AsString  :=Trim(Copy(Linha, 
124,20 ));
       DM.cdsImportacaouf.AsString           :=Trim(Copy(Linha, 
136,20 ));
       DM.cdsImportacaocod_pais.AsString     :=Trim(Copy(Linha, 
148,20 ));
       DM.cdsImportacaocep.AsString          :=Trim(Copy(Linha, 
160,20 ));
       DM.cdsImportacaocargo.AsString        :=Trim(Copy(Linha, 
172,20 ));
       DM.cdsImportacao.Post; //Salve o registro em memória.
       DM.cdsImportacao.ApplyUpdates(0); //Aplica as atualizações em 
memória no banco
       DM.cdsImportacao.Close;  //Fecha o CDS     }
       Inc(i);
       ProgressBar1.Position := ProgressBar1.Position + 1;
       Next;
  end;
       MessageBeep(65);
       ShowMessage('Processo Concluído Com êxito!!!');

 end; 

ERRO :
Project SysSam.exe raised exception class EDatabaseError with 
message "EMAIL RUA BAIRROC' 
IS NOT A VALID INTEGER VALUE FOR FIELD 'COD_AGENTE".

Agradeço a ajuda!!





Responder a