Ir para conteúdo
Fórum Script Brasil
  • 0

IMPORTAR DADOS PULANDO CAMPOS


Eder

Pergunta

Ola, bom dia

Uso este código para impostar dados de um arquivo txt separado por ponto e virgula(;)

      Table1.FieldByName('sigla_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('numero_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('ctrc/subcontr').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('nro_chave_acesso_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('situacao_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));

Minha dificuldade é que toda hora é incluido um campo novo no arquivo txt e o meu aplicativo da erro, pois ele não reconhece o campo novo incluso.

Teria como fazer na hora de importar  pular este campo novo? só importando o que realmente eu quero?

Obrigado, Abs Eder

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

sim tem cabeçalho com o nome dos campos, separado também por ponto e virgula.

segue o inicio do código para vc ver se consegue me dar uma ajudinha com o pequeno exemplo.
 

  Assignfile(Txt,(ExtractFilePath(Application.ExeName))+'\CTRC.TXT');//caminho do arquivo CSV
  Reset(Txt);
  ArqLido := 0;
  ArqSize := FileSize(txt) *128;  // *** FileSize assume blocos de 128 quando não é arquivo "tipado"
  gauge1.MaxValue := 104;  // *** equivale a 100 +4 valores que você incrementa na mão
  Linhas := 0;
  While not Eoln(Txt) do
  begin
    Readln(Txt,Entrada);
    //miachael abaixo
    ArqLido := ArqLido +Length(Entrada)+2;  //*** este 2 = CR+LN (presumido)
    Gauge1.Progress := Trunc(ArqLido/ArqSize *100);  // *** progress chegará no máximo a 100 (%)
    //
    Inc(Linhas);
    If Linhas > 3 then //aqui verifica e desconcidera AS 4 primeiras linhas do CSV
       If (Copy(Entrada, 1, 1) = '3') then //AQUI CONSIDERA SOMENTE AS LINHAS QUE TEM O CAMPO 1 = 3
    begin
      Table1.Insert;
      Table1.FieldByName('1').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('sigla_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('numero_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1);
      Delete(Entrada, 1, Pos(PathSep, Entrada));
      Table1.FieldByName('sigla_cte').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1

Obrigado.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...