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

(Resolvido) EDI PROGRAMACAO PECA/MATERIAL


MICHELI_MARTINS

Pergunta

Gente estou com uma duvida referente à importação.

Meu sistema esta pronto e já importa o arquivo txt. Mas o problema é que para cada tidpo de registro do edi (itp, pe1,pe2... e por ai vai) o layout começa sempre nas mesmas posições. por exemplo:

para itp: identificacao do registro, da posição 1 à posicao 3.

para pe1: identificacao do registro da posição 1 à posicao 3.

Quando meu sistema le isso ele simplesmente sobrescreve.

alguém saberia me dizer por onde eu posso diferenciar para que não aconteça isso? se é por linha, se é por elemento alguma coisa assim?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

micheli_martins, espero que alguém que já tenha feito este tipo de importação antes, possa apresentar uma solução já pronta, ou aproximada, para o seu caso.

Mas, enquanto isso...

eu acredito que você precisará processar linha por linha, obtendo o identificador do registro. Voce armazena o último registro lido em uma variável, para compará-la com a próxima linha lida, assim você saberá como processar cada um dele.

Voce já sabe de ante-mão que alguns registros ocorrem apenas uma vez, bem como, a sequência em que devem ocorrer, que alguns são obrigatórios e que alguns são subtipos. É com estas informações que você terá que trabalhar.

Não sei se ajuda muito, mas é apenas um rabisco aproximado de como me parece que deveria funcionar:

var
  Idx :Integer;
  Linha,
  RegId,   // identificador do registro
  RegIdOld :string;  // identificador do registro anterior
  EDIFile :TStringList;
begin
  EDIFile := TStringList.Create;
  try
    EDIFile.LoadFromFile('arquivo_edi.txt');
    Idx := 0;
    RegIdOld := '';
    Linha := EDIFile[Idx];
    RegId := Copy(Linha, 1, 3);
    if RegId = 'ITP' then
    begin
     // processa aqui os dados do registro ITP
     // ....  
     // processa as linhas exceto a última que deverá ser do tipo 'FTP'
      while (Idx < EDIFile.Count -1) do
      begin
        Inc(Idx);
        Linha := EDIFile[Idx];
        RegId := Copy(Linha, 1, 3);
        if RegIdOld <> RegId then
        begin
         // quando há mudança do identificador, faz 
         // algum processamento/validação. Por ex, o 
         // tipo PE3 só pode aparecer depois de um tipo PE5
         // ...
          RegIdOld := RegId;  // atualiza variável
        end;
       // processa aqui os dados do registro conforme identificador
        if RegId = 'PE1' then
       // ....
        else if RegId = 'PE2' then
       // ....
        else if RegId = 'PE3' then
      end;

      Inc(Idx);
      Linha := EDIFile[Idx];
      RegId := Copy(Linha, 1, 3);
      if RegId = 'FTP' then
      begin
     // processa dados do identificador FTP
      end else
        ShowMessage('Identificador FTP não encontrado');
    end else
      ShowMessage('Identificador ITP não encontrado');
  finally
    EDIFile.Free;
  end;
end;

Na verdade, pode ser conveniente fazer uma espécie de parser antes de usar efetivamente os dados, observando todas as questões de sequência, precedência e obrigatoriedade dos identificadores, conforme previsto no manual operacional.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

micheus eu dei uma pequena modificada do seu codigo, esta quase la...só o loop q ta dando trabalho agora...

apenas desconsidere os id dos registros porque estou seguindo pelo nome que consta no manual.

procedure TFORMPROGRAMACAO.BTNIMPORTARClick(Sender: TObject);

Var

Txt:TextFile;

Linha,RegId,RegIdOld :string; // identificador do registro anterior

sArquivo: String;

BEGIN

if abrirarquivo.Execute then

begin

sArquivo:= (abrirarquivo.FileName);

end;

AssignFile(Txt,sArquivo);

Reset (txt);

{A variavel LINHA vai receceber linha a linha as informações do arquivo TXT.}

ReadLn(Txt,LINHA);

RegIdOld := '';

RegId := Copy(Linha, 1, 3);

if RegId = 'ITP' then

begin

// processa aqui os dados do registro ITP

TBLEDI.Insert;

{Nome do campo a ser gravado, coluna inicial e tamanho de cada campo.}

TBLEDI.FieldByName('ITPTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('ITPIDENTIFICACAOPROCESSO').ASSTRING :=(Copy(LINHA,04,03));

TBLEDI.FieldByName('ITPVERSAOTRANSACAO').ASSTRING :=(Copy(LINHA,07,02));

TBLEDI.FieldByName('ITPNUMEROCONTROLETRANSMISSAO').ASSTRING :=(Copy(LINHA,09,05));

TBLEDI.FieldByName('ITPIDGERACAOMOVIMENTO').ASSTRING :=(Copy(LINHA,14,12));

TBLEDI.FieldByName('ITPIDTRANSMISSORCOMUNICACAO').ASSTRING :=(Copy(LINHA,26,14));

TBLEDI.FieldByName('ITPIDRECEPTORCOMUNICACAO').ASSTRING :=(Copy(LINHA,40,14));

TBLEDI.FieldByName('ITPCODIGOINTERNOTRANSMISSOR').ASSTRING :=(Copy(LINHA,54,08));

TBLEDI.FieldByName('ITPCODIGOINTERNORECEPTOR').ASSTRING :=(Copy(LINHA,62,08));

TBLEDI.FieldByName('ITPNOMETRANSMISSOR').ASSTRING :=(Copy(LINHA,70,25));

TBLEDI.FieldByName('ITPNOMERECEPTOR').ASSTRING :=(Copy(LINHA,95,25));

TBLEDI.FieldByName('ITPESPACO').ASSTRING :=(Copy(LINHA,120,09));

TBLEDI.post;//Salva tabela

// processa as linhas exceto a última que deverá ser do tipo 'FTP'

while Eoln(Txt) do

begin

ReadLn(Txt,LINHA);

RegId := Copy(Linha, 1, 3);

if RegIdOld <> RegId then

begin

// quando há mudança do identificador, faz

// algum processamento/validação. Por ex, o

// tipo PE3 só pode aparecer depois de um tipo PE5

// ...

RegIdOld := RegId; // atualiza variável

end;

// processa aqui os dados do registro conforme identificador

if RegId = 'PE1' then

BEGIN

TBLEDI.Insert;

TBLEDI.FieldByName('PE1TIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE1CODFABRICADESTINO').ASSTRING :=(Copy(LINHA,04,03));

TBLEDI.FieldByName('PE1IDENTIFICACAOPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,07,09));

TBLEDI.FieldByName('PE1DATAPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,16,06));

TBLEDI.FieldByName('PE1IDPROGRAMAANTERIOR').ASSTRING :=(Copy(LINHA,22,09));

TBLEDI.FieldByName('PE1DATAPROGRAMAANTERIOR').ASSTRING :=(Copy(LINHA,31,06));

TBLEDI.FieldByName('PE1CODIGOITEMCLIENTE').ASSTRING :=(Copy(LINHA,37,30));

TBLEDI.FieldByName('PE1CODIGOITEMFORNECEDOR').ASSTRING :=(Copy(LINHA,67,30));

TBLEDI.FieldByName('PE1NUMEROPEDIDOCOMPRA').ASSTRING :=(Copy(LINHA,97,12));

TBLEDI.FieldByName('PE1CODIGOLOCALDESTINO').ASSTRING :=(Copy(LINHA,109,05));

TBLEDI.FieldByName('PE1IDENTIFICACAOCONTATO').ASSTRING :=(Copy(LINHA,114,11));

TBLEDI.FieldByName('PE1CODIGOUNIDADEMEDIDA').ASSTRING :=(Copy(LINHA,125,02));

TBLEDI.FieldByName('PE1QUANTIDADECASASDECIMAIS').ASSTRING :=(Copy(LINHA,127,01));

TBLEDI.FieldByName('PE1CODIGOTIPOFORNECIMENTO').ASSTRING :=(Copy(LINHA,128,01));

TBLEDI.post;//Salva tabela

END

else if RegId = 'PE2' then

BEGIN

TBLEDI.Insert;

TBLEDI.FieldByName('PE2IDENTIFICACAOTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE2DATAULTIMAENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE2NUMEROULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,10,06));

TBLEDI.FieldByName('PE2SERIEULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,16,04));

TBLEDI.FieldByName('PE2DATAULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,20,6));

TBLEDI.FieldByName('PE2QTULTIMAENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,26,12));

TBLEDI.FieldByName('PE2QTENTREGAEMBARQUEACUMULADA').ASSTRING :=(Copy(LINHA,38,14));

TBLEDI.FieldByName('PE2QTNECESSACUMULADA').ASSTRING :=(Copy(LINHA,52,14));

TBLEDI.FieldByName('PE2QTLOTEMINIMO').ASSTRING :=(Copy(LINHA,66,12));

TBLEDI.FieldByName('PE2CODFREQUENCIAFORNECIMENTO').ASSTRING :=(Copy(LINHA,78,03));

TBLEDI.FieldByName('PE2DATALIBERACAOPRODUCAO').ASSTRING :=(Copy(LINHA,81,04));

TBLEDI.FieldByName('PE2DATALIBERACAOMATERIAPRIMA').ASSTRING :=(Copy(LINHA,85,04));

TBLEDI.FieldByName('PE2CODLOCALDESCARGA').ASSTRING :=(Copy(LINHA,89,07));

TBLEDI.FieldByName('P2PERIODOENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,96,04));

TBLEDI.FieldByName('PE2SITUACAODOITEM').ASSTRING :=(Copy(LINHA,100,02));

TBLEDI.FieldByName('PE2IDENTTIPOPROGRAMACAO').ASSTRING :=(Copy(LINHA,102,01));

TBLEDI.FieldByName('PE2PEDIDODAREVENDA').ASSTRING :=(Copy(LINHA,103,13));

TBLEDI.FieldByName('PE2QUALIFICACAOPROGRAMACAO').ASSTRING :=(Copy(LINHA,116,01));

TBLEDI.FieldByName('PE2TIPODEPEDIDOREVENDA').ASSTRING :=(Copy(LINHA,117,02));

TBLEDI.FieldByName('PE2CODDAVIATRANSPORTE').ASSTRING :=(Copy(LINHA,119,03));

TBLEDI.FieldByName('PE2ESPACO').ASSTRING :=(Copy(LINHA,122,07));

TBLEDI.post;//Salva tabela

END

else if RegId = 'PE9' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE9IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE9PEDIDOCOMPRAREF1').ASSTRING :=(Copy(LINHA,04,14));

TBLEDI.FieldByName('PE9TIPODOPEDIDO').ASSTRING :=(Copy(LINHA,18,02));

TBLEDI.FieldByName('PE9PEDIDODECOMPRAREF2').ASSTRING :=(Copy(LINHA,20,10));

TBLEDI.FieldByName('PE9NUMEROLOTEPRODUCAO').ASSTRING :=(Copy(LINHA,30,12));

TBLEDI.FieldByName('PE9DATAENTREGABEMITEM').ASSTRING :=(Copy(LINHA,42,06));

TBLEDI.FieldByName('PE9HORAENTREGA').ASSTRING :=(Copy(LINHA,48,04));

TBLEDI.FieldByName('PE9QUANTIDADEENTREGA').ASSTRING :=(Copy(LINHA,52,09));

TBLEDI.FieldByName('PE9CONTROLEPRODUCAOINICIAL').ASSTRING :=(Copy(LINHA,61,03));

TBLEDI.FieldByName('PE9ESPACO').ASSTRING :=(Copy(LINHA,64,65));

TBLEDI.post;//Salva tabela

END

ELSE if REGID = 'PE3' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE3IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,10,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,12,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,21,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,27,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,29,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,38,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,44,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,46,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,55,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,61,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,63,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,72,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,78,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,80,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,89,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,95,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,97,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM6').ASSTRING :=(Copy(LINHA,106,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM6').ASSTRING :=(Copy(LINHA,112,02));

TBLEDI.FIELDBYNAME('PE3QTENTREGAEMBARQUEITEM6').ASSTRING:= (Copy(LINHA,114,09));

TBLEDI.FieldByName('PE3ESPACO').ASSTRING :=(Copy(LINHA,123,06));

TBLEDI.post;//Salva tabela

END

ELSE if REGID ='PE5' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE5IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO').ASSTRING :=(Copy(LINHA,10,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,11,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,20,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO1').ASSTRING :=(Copy(LINHA,26,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL1').ASSTRING :=(Copy(LINHA,27,09));

TBLEDI.FieldByName('PE5DATAINICIALENTREGAEMBARQUE2').ASSTRING :=(Copy(LINHA,36,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO2').ASSTRING :=(Copy(LINHA,42,01));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMAATUAL2').ASSTRING :=(Copy(LINHA,43,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,52,06));

TBLEDI.FieldByName('PE5IDENTIFICACAODEPROGRAMACAO3').ASSTRING :=(Copy(LINHA,58,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL3').ASSTRING :=(Copy(LINHA,59,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,68,06));

TBLEDI.FieldByName('PE5IDENTIFICACAODEPROGRAMACAO4').ASSTRING :=(Copy(LINHA,74,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL4').ASSTRING :=(Copy(LINHA,75,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,84,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO5').ASSTRING :=(Copy(LINHA,90,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL5').ASSTRING :=(Copy(LINHA,91,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUE6').ASSTRING :=(Copy(LINHA,100,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO6').ASSTRING :=(Copy(LINHA,106,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL6').ASSTRING :=(Copy(LINHA,107,09));

TBLEDI.FieldByName('PE5ESPACO').ASSTRING :=(Copy(LINHA,116,13));

TBLEDI.post;//Salva tabela

END

ELSE if REGID = 'PE6' then

BEGIN

TBLEDI.Insert;

TBLEDI.FieldByName('PE6IDENTDOTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE6FATORDECONVERSAO').ASSTRING :=(Copy(LINHA,04,10));

TBLEDI.FieldByName('PE6ALTERACAOTECNICADOITEM').ASSTRING :=(Copy(LINHA,14,04));

TBLEDI.FieldByName('PE6CODIGODEMATERIAL').ASSTRING :=(Copy(LINHA,18,10));

TBLEDI.FieldByName('PE6PESODOITEM').ASSTRING :=(Copy(LINHA,28,12));

TBLEDI.FieldByName('PE6UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,40,02));

TBLEDI.FieldByName('PE6ESPACO').ASSTRING :=(Copy(LINHA,42,87));

TBLEDI.post;//Salva tabela

END

ELSE if REGID = 'PE7' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE7IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE7IDENTEMBALAGEMPRIMCLIENTE').ASSTRING :=(Copy(LINHA,04,30));

TBLEDI.FieldByName('PE7DESCRICAOEMBALAGEM').ASSTRING :=(Copy(LINHA,34,20));

TBLEDI.FieldByName('PE7ALTURAEMBALAGEM').ASSTRING :=(Copy(LINHA,54,12));

TBLEDI.FieldByName('PE7LARGURAEMBALAGEM').ASSTRING :=(Copy(LINHA,66,12));

TBLEDI.FieldByName('PE7COMPRIMENTOEMBALAGEM').ASSTRING :=(Copy(LINHA,78,12));

TBLEDI.FieldByName('PE7UNIDMEDIDADIMEMBALAGEM').ASSTRING :=(Copy(LINHA,90,02));

TBLEDI.FieldByName('PE7PESODAEMBALAGEM').ASSTRING :=(Copy(LINHA,92,12));

TBLEDI.FieldByName('PE7UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,104,02));

TBLEDI.FieldByName('PE7CAPACIDEMBALPRIMCLIENTE').ASSTRING :=(Copy(LINHA,106,12));

TBLEDI.FieldByName('PE7CODRESPONSAVELPEMBALAGEM').ASSTRING :=(Copy(LINHA,118,01));

TBLEDI.FieldByName('PE7ESPACO').ASSTRING :=(Copy(LINHA,119,10));

TBLEDI.post;//Salva tabela

END

ELSE if REGID = 'PE8' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE8IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE8IDEMBALAGEMSECUNDARIACLIE').ASSTRING :=(Copy(LINHA,04,20));

TBLEDI.FieldByName('PE8DESCRICAOEMBALAGEM').ASSTRING :=(Copy(LINHA,24,20));

TBLEDI.FieldByName('PE8ALTURAEMBALAGEM').ASSTRING :=(Copy(LINHA,44,12));

TBLEDI.FieldByName('PE8LARGURAEMBALAGEM').ASSTRING :=(Copy(LINHA,56,12));

TBLEDI.FieldByName('PE8COMPRIMENTOEMBALAGEM').ASSTRING :=(Copy(LINHA,68,12));

TBLEDI.FieldByName('PE8UNIDMEDIDADIMEMBALAGEM').ASSTRING :=(Copy(LINHA,80,02));

TBLEDI.FieldByName('PE8PESOEMBALAGEM').ASSTRING :=(Copy(LINHA,82,12));

TBLEDI.FieldByName('PE8UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,94,02));

TBLEDI.FieldByName('PE8CAPACEMBALAGEMSECUNDARIA').ASSTRING :=(Copy(LINHA,96,12));

TBLEDI.FieldByName('PE8NEMBPRIMCAMEMBSEC').ASSTRING :=(Copy(LINHA,108,03));

TBLEDI.FieldByName('PE8NUMCAMEMBSECUNDARIA').ASSTRING :=(Copy(LINHA,111,03));

TBLEDI.FieldByName('PE8ESPACO').ASSTRING :=(Copy(LINHA,114,15));

TBLEDI.post;//Salva tabela

END

ELSE if REGID ='PE4' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('PE4IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE4IDENTEMBALSECUNDARIACLIE').ASSTRING :=(Copy(LINHA,04,20));

TBLEDI.FieldByName('PE4IDENTEMBALSECUNDARIAFORN').ASSTRING :=(Copy(LINHA,24,30));

TBLEDI.FieldByName('PE4CAPCEMBALAGEMSECUNDARIA').ASSTRING :=(Copy(LINHA,54,12));

TBLEDI.FieldByName('PE4IDENTEMBALPRIMARIAFORN').ASSTRING :=(Copy(LINHA,66,30));

TBLEDI.FieldByName('PE4CAPACEMBALPRIMARIAFORN').ASSTRING :=(Copy(LINHA,96,12));

TBLEDI.FieldByName('PE4CODRESPONSAVELPEMBALAGEM').ASSTRING :=(Copy(LINHA,108,01));

TBLEDI.FieldByName('PE4ESPACO').ASSTRING :=(Copy(LINHA,109,20));

TBLEDI.post;//Salva tabela

END

ELSE if REGID = 'TE1' then

BEGIN

TBLEDI.INSERT;

TBLEDI.FieldByName('TE1IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO').ASSTRING :=(Copy(LINHA,04,40));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO1').ASSTRING :=(Copy(LINHA,44,40));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO2').ASSTRING :=(Copy(LINHA,84,40));

TBLEDI.FieldByName('TE1ESPACO').ASSTRING :=(Copy(LINHA,124,05));

TBLEDI.post;//Salva tabela

END;

end;

if RegId = 'FTP' then

begin

// processa dados do identificador FTP

TBLEDI.INSERT;

TBLEDI.FieldByName('FTPIDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('FTPNUMEROCONTROLETRANSMISSAO').ASSTRING :=(Copy(LINHA,04,05));

TBLEDI.FieldByName('FTPQUANTREGISTROSTRANSACAO').ASSTRING :=(Copy(LINHA,09,09));

TBLEDI.FieldByName('FTPNUMEROTOTALVALORES').ASSTRING :=(Copy(LINHA,18,17));

TBLEDI.FieldByName('FTPCATEGORIAOPERACAO').ASSTRING :=(Copy(LINHA,35,01));

TBLEDI.FieldByName('FTPESPACO').ASSTRING :=(Copy(LINHA,36,93));

TBLEDI.post;//Salva tabela

end else

ShowMessage('Identificador FTP não encontrado');

end else

ShowMessage('Identificador ITP não encontrado');

TABELAEDI.SQL.CLEAR;

TABELAEDI.SQL.ADD('SELECT * FROM IMPORTACAOSCANIA');

TABELAEDI.ExecSQL;

TABELAEDI.OPEN;

end;

end.

Editado por MICHELI_MARTINS
Link para o comentário
Compartilhar em outros sites

  • 0
se você reparar existem linhas que já começam com numeros e não com o id...
Nesta fração de exemplo, não há uma linha que não comece com letras (utilizadas para o identificador): :huh:

ITP0041500000090327000000000...
AE1011306U   0903260030000000...
AE2001            A3273530350      ...
AE41800
AE70000000000005.10100000000...
AE2002            A6533530050      ...
AE41800
AE70000000000005.10100000000...
AE2003            A3553320148      ...
AE41800
AE70000000000005.10100000000...
AE8000000          000                                                                                                          
TE1                                                                                                                             
AE1011307U   0903260020000000...
AE2001            T53215                ...
AE40000
AE70000000000005.92100000000...
AE2002            T54315               ...
AE40000
AE70000000000005.92100000000...
AE8000000          000                                                                                                          
TE1                                                                                                                             
FTP00002000000023
...só o loop q ta dando trabalho agora... apenas desconsidere os id dos registros porque estou seguindo pelo nome que consta no manual.
Acrescentando o que você me enviou por e-mail, para ajudar no entendimento dos colegas... (e meu :))
ele le os ids no codigo que eu coloquei mas esta jogando 4 linhas na tabela quando era pra jogar só uma...
Apesar de a adaptação do código não estar muito apropriada para a abordagem que você utilizou (trabalhar com TextFile ao invés do TStringList), isto pode ser melhorado posteriormente. Mas, a primeira vista, não parece haver algo errado no processamento realizado dentro do loop. Que tipo de registro deveria aparecer apenas uma vez e aparece quatro? Pelo que consta do manual, há tipos de registros que podem ter N ocorrências:
### Modelo Descritivo ###
     IDENTIF. INDICADOR
       REG      DE USO  OCORR. SUBORD.        NOME DO REGISTRO
       ---      ------  ------ -------  ------------------------------
       ITP        M       1             INICIO DA TRANSMISSAO PROCESSO
       PE1        M       N      ITP    Dados do Item                 
       PE2        M       1      PE1    Inform. de Entregas/Embarque  
       PE3        M       N      PE1    CRONOGRAMA DE ENTREGA/EMBARQUE
       PE5        O       N      PE3    COMPL CRONOGR ENTREGA/EMBARQUE
       PE6        O       N      PE1    DADOS COMPLEMENTARES DO ITEM  
       PE7        O       1      PE1    DADOS DA EMB. PRIM. DO CLIENTE
       PE8        O       1      PE1    DADOS DA EMB. SEC. DO CLIENTE 
       PE4        O       1      PE1    DADOS DA EMBALAGEM            
       TE1        O       1      PE1    TEXTO LIVRE                   
       FTP        M       1      TE1    TERMINO TRANSMISSAO PROCESSO
Sugestões: 1) quando postar código no forum, cerque ele com as tag's [ code] <código> [ /code] (sem o espaço depois do couchete); se puder, edite o seu post anterior e inclua elas porque facilita muito a visualização dele. 2) facilitará muito a organização/manutenção, se você criar um procedimento para cada tipo de identificador a ser processado; você passa a linha como parâmetro e, eventualmente, se for tratar a versão do arquivo, também passa a versão. Ex.:
procedure LeRegITP(Linha :string);
begin
  ...
end;

procedure LeRegPE1(Linha :string);
begin
  ...
end;
  :
  :
procedure LeRegPE8(Linha :string);
begin
  ...
end;

procedure LeRegFTP(Linha :string);
begin
  ...
end;

procedure TFormProgramacao.BtnImportarClick(Sender: TObject);
Var
  Txt:TextFile;
  :
begin
  :
  if RegId = 'ITP' then
    LeRegITP(Linha);
  :
  while ....
  begin
    if RegId = 'PE1' then
      LeRegPE1(Linha)
    else if RegId = 'PE2' then
      LeRegPE2(Linha)
      :
  end;
  :
end;

Link para o comentário
Compartilhar em outros sites

  • 0

micheus achei os erros acho q agora ta certo.

primeiro o loop é while "NOT" eu havia me esquecido.

segundo é um insert só na tabela para cada transaçao, e não um por registro. lembrando q este é o manual de peça/programacao. mas existem varios EDIs.

então o código fica assim:

procedure TFORMPROGRAMACAO.BTNIMPORTARClick(Sender: TObject);

Var

Txt:TextFile;

Linha,RegId,RegIdOld :string; // identificador do registro anterior

sArquivo: String;

BEGIN

if abrirarquivo.Execute then

begin

sArquivo:= (abrirarquivo.FileName);

end;

AssignFile(Txt,sArquivo);

Reset (txt);

{A variavel LINHA vai receceber linha a linha as informações do arquivo TXT.}

ReadLn(Txt,LINHA);

RegIdOld := '';

RegId := Copy(Linha, 1, 3);

if RegId = 'ITP' then

begin

// processa aqui os dados do registro ITP

TBLEDI.Insert;

{Nome do campo a ser gravado, coluna inicial e tamanho de cada campo.}

TBLEDI.FieldByName('ITPTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('ITPIDENTIFICACAOPROCESSO').ASSTRING :=(Copy(LINHA,04,03));

TBLEDI.FieldByName('ITPVERSAOTRANSACAO').ASSTRING :=(Copy(LINHA,07,02));

TBLEDI.FieldByName('ITPNUMEROCONTROLETRANSMISSAO').ASSTRING :=(Copy(LINHA,09,05));

TBLEDI.FieldByName('ITPIDGERACAOMOVIMENTO').ASSTRING :=(Copy(LINHA,14,12));

TBLEDI.FieldByName('ITPIDTRANSMISSORCOMUNICACAO').ASSTRING :=(Copy(LINHA,26,14));

TBLEDI.FieldByName('ITPIDRECEPTORCOMUNICACAO').ASSTRING :=(Copy(LINHA,40,14));

TBLEDI.FieldByName('ITPCODIGOINTERNOTRANSMISSOR').ASSTRING :=(Copy(LINHA,54,08));

TBLEDI.FieldByName('ITPCODIGOINTERNORECEPTOR').ASSTRING :=(Copy(LINHA,62,08));

TBLEDI.FieldByName('ITPNOMETRANSMISSOR').ASSTRING :=(Copy(LINHA,70,25));

TBLEDI.FieldByName('ITPNOMERECEPTOR').ASSTRING :=(Copy(LINHA,95,25));

TBLEDI.FieldByName('ITPESPACO').ASSTRING :=(Copy(LINHA,120,09));

// processa as linhas exceto a última que deverá ser do tipo 'FTP'

while not Eoln(Txt) do

begin

ReadLn(Txt,LINHA);

RegId := Copy(Linha, 1, 3);

if RegIdOld <> RegId then

begin

// quando há mudança do identificador, faz

// algum processamento/validação. Por ex, o

// tipo PE3 só pode aparecer depois de um tipo PE5

// ...

RegIdOld := RegId; // atualiza variável

end;

// processa aqui os dados do registro conforme identificador

if RegId = 'PE1' then

BEGIN

TBLEDI.FieldByName('PE1TIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE1CODFABRICADESTINO').ASSTRING :=(Copy(LINHA,04,03));

TBLEDI.FieldByName('PE1IDENTIFICACAOPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,07,09));

TBLEDI.FieldByName('PE1DATAPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,16,06));

TBLEDI.FieldByName('PE1IDPROGRAMAANTERIOR').ASSTRING :=(Copy(LINHA,22,09));

TBLEDI.FieldByName('PE1DATAPROGRAMAANTERIOR').ASSTRING :=(Copy(LINHA,31,06));

TBLEDI.FieldByName('PE1CODIGOITEMCLIENTE').ASSTRING :=(Copy(LINHA,37,30));

TBLEDI.FieldByName('PE1CODIGOITEMFORNECEDOR').ASSTRING :=(Copy(LINHA,67,30));

TBLEDI.FieldByName('PE1NUMEROPEDIDOCOMPRA').ASSTRING :=(Copy(LINHA,97,12));

TBLEDI.FieldByName('PE1CODIGOLOCALDESTINO').ASSTRING :=(Copy(LINHA,109,05));

TBLEDI.FieldByName('PE1IDENTIFICACAOCONTATO').ASSTRING :=(Copy(LINHA,114,11));

TBLEDI.FieldByName('PE1CODIGOUNIDADEMEDIDA').ASSTRING :=(Copy(LINHA,125,02));

TBLEDI.FieldByName('PE1QUANTIDADECASASDECIMAIS').ASSTRING :=(Copy(LINHA,127,01));

TBLEDI.FieldByName('PE1CODIGOTIPOFORNECIMENTO').ASSTRING :=(Copy(LINHA,128,01));

END

else if RegId = 'PE2' then

BEGIN

TBLEDI.FieldByName('PE2IDENTIFICACAOTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE2DATAULTIMAENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE2NUMEROULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,10,06));

TBLEDI.FieldByName('PE2SERIEULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,16,04));

TBLEDI.FieldByName('PE2DATAULTIMANOTAFISCAL').ASSTRING :=(Copy(LINHA,20,6));

TBLEDI.FieldByName('PE2QTULTIMAENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,26,12));

TBLEDI.FieldByName('PE2QTENTREGAEMBARQUEACUMULADA').ASSTRING :=(Copy(LINHA,38,14));

TBLEDI.FieldByName('PE2QTNECESSACUMULADA').ASSTRING :=(Copy(LINHA,52,14));

TBLEDI.FieldByName('PE2QTLOTEMINIMO').ASSTRING :=(Copy(LINHA,66,12));

TBLEDI.FieldByName('PE2CODFREQUENCIAFORNECIMENTO').ASSTRING :=(Copy(LINHA,78,03));

TBLEDI.FieldByName('PE2DATALIBERACAOPRODUCAO').ASSTRING :=(Copy(LINHA,81,04));

TBLEDI.FieldByName('PE2DATALIBERACAOMATERIAPRIMA').ASSTRING :=(Copy(LINHA,85,04));

TBLEDI.FieldByName('PE2CODLOCALDESCARGA').ASSTRING :=(Copy(LINHA,89,07));

TBLEDI.FieldByName('P2PERIODOENTREGAEMBARQUE').ASSTRING :=(Copy(LINHA,96,04));

TBLEDI.FieldByName('PE2SITUACAODOITEM').ASSTRING :=(Copy(LINHA,100,02));

TBLEDI.FieldByName('PE2IDENTTIPOPROGRAMACAO').ASSTRING :=(Copy(LINHA,102,01));

TBLEDI.FieldByName('PE2PEDIDODAREVENDA').ASSTRING :=(Copy(LINHA,103,13));

TBLEDI.FieldByName('PE2QUALIFICACAOPROGRAMACAO').ASSTRING :=(Copy(LINHA,116,01));

TBLEDI.FieldByName('PE2TIPODEPEDIDOREVENDA').ASSTRING :=(Copy(LINHA,117,02));

TBLEDI.FieldByName('PE2CODDAVIATRANSPORTE').ASSTRING :=(Copy(LINHA,119,03));

TBLEDI.FieldByName('PE2ESPACO').ASSTRING :=(Copy(LINHA,122,07));

END

else if RegId = 'PE9' then

BEGIN

TBLEDI.FieldByName('PE9IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE9PEDIDOCOMPRAREF1').ASSTRING :=(Copy(LINHA,04,14));

TBLEDI.FieldByName('PE9TIPODOPEDIDO').ASSTRING :=(Copy(LINHA,18,02));

TBLEDI.FieldByName('PE9PEDIDODECOMPRAREF2').ASSTRING :=(Copy(LINHA,20,10));

TBLEDI.FieldByName('PE9NUMEROLOTEPRODUCAO').ASSTRING :=(Copy(LINHA,30,12));

TBLEDI.FieldByName('PE9DATAENTREGABEMITEM').ASSTRING :=(Copy(LINHA,42,06));

TBLEDI.FieldByName('PE9HORAENTREGA').ASSTRING :=(Copy(LINHA,48,04));

TBLEDI.FieldByName('PE9QUANTIDADEENTREGA').ASSTRING :=(Copy(LINHA,52,09));

TBLEDI.FieldByName('PE9CONTROLEPRODUCAOINICIAL').ASSTRING :=(Copy(LINHA,61,03));

TBLEDI.FieldByName('PE9ESPACO').ASSTRING :=(Copy(LINHA,64,65));

END

ELSE if REGID = 'PE3' then

BEGIN

TBLEDI.FieldByName('PE3IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,10,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,12,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,21,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,27,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,29,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,38,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,44,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM2').ASSTRING :=(Copy(LINHA,46,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,55,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,61,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,63,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,72,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,78,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,80,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,89,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,95,02));

TBLEDI.FieldByName('PE3QTENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,97,09));

TBLEDI.FieldByName('PE3DATAENTREGAEMBARQUEITEM6').ASSTRING :=(Copy(LINHA,106,06));

TBLEDI.FieldByName('PE3HORAENTREGAEMBARQUEITEM6').ASSTRING :=(Copy(LINHA,112,02));

TBLEDI.FIELDBYNAME('PE3QTENTREGAEMBARQUEITEM6').ASSTRING:= (Copy(LINHA,114,09));

TBLEDI.FieldByName('PE3ESPACO').ASSTRING :=(Copy(LINHA,123,06));

END

ELSE if REGID ='PE5' then

BEGIN

TBLEDI.FieldByName('PE5IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM').ASSTRING :=(Copy(LINHA,04,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO').ASSTRING :=(Copy(LINHA,10,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL').ASSTRING :=(Copy(LINHA,11,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM1').ASSTRING :=(Copy(LINHA,20,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO1').ASSTRING :=(Copy(LINHA,26,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL1').ASSTRING :=(Copy(LINHA,27,09));

TBLEDI.FieldByName('PE5DATAINICIALENTREGAEMBARQUE2').ASSTRING :=(Copy(LINHA,36,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO2').ASSTRING :=(Copy(LINHA,42,01));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMAATUAL2').ASSTRING :=(Copy(LINHA,43,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM3').ASSTRING :=(Copy(LINHA,52,06));

TBLEDI.FieldByName('PE5IDENTIFICACAODEPROGRAMACAO3').ASSTRING :=(Copy(LINHA,58,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL3').ASSTRING :=(Copy(LINHA,59,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM4').ASSTRING :=(Copy(LINHA,68,06));

TBLEDI.FieldByName('PE5IDENTIFICACAODEPROGRAMACAO4').ASSTRING :=(Copy(LINHA,74,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL4').ASSTRING :=(Copy(LINHA,75,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUEITEM5').ASSTRING :=(Copy(LINHA,84,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO5').ASSTRING :=(Copy(LINHA,90,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL5').ASSTRING :=(Copy(LINHA,91,09));

TBLEDI.FieldByName('PE5DATAINENTREGAEMBARQUE6').ASSTRING :=(Copy(LINHA,100,06));

TBLEDI.FieldByName('PE5IDENTIFICACAOPROGRAMACAO6').ASSTRING :=(Copy(LINHA,106,01));

TBLEDI.FieldByName('PE5IDENTPROGRAMAATUAL6').ASSTRING :=(Copy(LINHA,107,09));

TBLEDI.FieldByName('PE5ESPACO').ASSTRING :=(Copy(LINHA,116,13));

END

ELSE if REGID = 'PE6' then

BEGIN

TBLEDI.FieldByName('PE6IDENTDOTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE6FATORDECONVERSAO').ASSTRING :=(Copy(LINHA,04,10));

TBLEDI.FieldByName('PE6ALTERACAOTECNICADOITEM').ASSTRING :=(Copy(LINHA,14,04));

TBLEDI.FieldByName('PE6CODIGODEMATERIAL').ASSTRING :=(Copy(LINHA,18,10));

TBLEDI.FieldByName('PE6PESODOITEM').ASSTRING :=(Copy(LINHA,28,12));

TBLEDI.FieldByName('PE6UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,40,02));

TBLEDI.FieldByName('PE6ESPACO').ASSTRING :=(Copy(LINHA,42,87));

END

ELSE if REGID = 'PE7' then

BEGIN

TBLEDI.FieldByName('PE7IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE7IDENTEMBALAGEMPRIMCLIENTE').ASSTRING :=(Copy(LINHA,04,30));

TBLEDI.FieldByName('PE7DESCRICAOEMBALAGEM').ASSTRING :=(Copy(LINHA,34,20));

TBLEDI.FieldByName('PE7ALTURAEMBALAGEM').ASSTRING :=(Copy(LINHA,54,12));

TBLEDI.FieldByName('PE7LARGURAEMBALAGEM').ASSTRING :=(Copy(LINHA,66,12));

TBLEDI.FieldByName('PE7COMPRIMENTOEMBALAGEM').ASSTRING :=(Copy(LINHA,78,12));

TBLEDI.FieldByName('PE7UNIDMEDIDADIMEMBALAGEM').ASSTRING :=(Copy(LINHA,90,02));

TBLEDI.FieldByName('PE7PESODAEMBALAGEM').ASSTRING :=(Copy(LINHA,92,12));

TBLEDI.FieldByName('PE7UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,104,02));

TBLEDI.FieldByName('PE7CAPACIDEMBALPRIMCLIENTE').ASSTRING :=(Copy(LINHA,106,12));

TBLEDI.FieldByName('PE7CODRESPONSAVELPEMBALAGEM').ASSTRING :=(Copy(LINHA,118,01));

TBLEDI.FieldByName('PE7ESPACO').ASSTRING :=(Copy(LINHA,119,10));

END

ELSE if REGID = 'PE8' then

BEGIN

TBLEDI.FieldByName('PE8IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE8IDEMBALAGEMSECUNDARIACLIE').ASSTRING :=(Copy(LINHA,04,20));

TBLEDI.FieldByName('PE8DESCRICAOEMBALAGEM').ASSTRING :=(Copy(LINHA,24,20));

TBLEDI.FieldByName('PE8ALTURAEMBALAGEM').ASSTRING :=(Copy(LINHA,44,12));

TBLEDI.FieldByName('PE8LARGURAEMBALAGEM').ASSTRING :=(Copy(LINHA,56,12));

TBLEDI.FieldByName('PE8COMPRIMENTOEMBALAGEM').ASSTRING :=(Copy(LINHA,68,12));

TBLEDI.FieldByName('PE8UNIDMEDIDADIMEMBALAGEM').ASSTRING :=(Copy(LINHA,80,02));

TBLEDI.FieldByName('PE8PESOEMBALAGEM').ASSTRING :=(Copy(LINHA,82,12));

TBLEDI.FieldByName('PE8UNIDMEDIDAUSADAPPESO').ASSTRING :=(Copy(LINHA,94,02));

TBLEDI.FieldByName('PE8CAPACEMBALAGEMSECUNDARIA').ASSTRING :=(Copy(LINHA,96,12));

TBLEDI.FieldByName('PE8NEMBPRIMCAMEMBSEC').ASSTRING :=(Copy(LINHA,108,03));

TBLEDI.FieldByName('PE8NUMCAMEMBSECUNDARIA').ASSTRING :=(Copy(LINHA,111,03));

TBLEDI.FieldByName('PE8ESPACO').ASSTRING :=(Copy(LINHA,114,15));

END

ELSE if REGID ='PE4' then

BEGIN

TBLEDI.FieldByName('PE4IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('PE4IDENTEMBALSECUNDARIACLIE').ASSTRING :=(Copy(LINHA,04,20));

TBLEDI.FieldByName('PE4IDENTEMBALSECUNDARIAFORN').ASSTRING :=(Copy(LINHA,24,30));

TBLEDI.FieldByName('PE4CAPCEMBALAGEMSECUNDARIA').ASSTRING :=(Copy(LINHA,54,12));

TBLEDI.FieldByName('PE4IDENTEMBALPRIMARIAFORN').ASSTRING :=(Copy(LINHA,66,30));

TBLEDI.FieldByName('PE4CAPACEMBALPRIMARIAFORN').ASSTRING :=(Copy(LINHA,96,12));

TBLEDI.FieldByName('PE4CODRESPONSAVELPEMBALAGEM').ASSTRING :=(Copy(LINHA,108,01));

TBLEDI.FieldByName('PE4ESPACO').ASSTRING :=(Copy(LINHA,109,20));

END

ELSE if REGID = 'TE1' then

BEGIN

TBLEDI.FieldByName('TE1IDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO').ASSTRING :=(Copy(LINHA,04,40));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO1').ASSTRING :=(Copy(LINHA,44,40));

TBLEDI.FieldByName('TE1TEXTOLIVREINFORMATIVO2').ASSTRING :=(Copy(LINHA,84,40));

TBLEDI.FieldByName('TE1ESPACO').ASSTRING :=(Copy(LINHA,124,05));

END

end;

if regid = 'FTP' then

begin

// processa dados do identificador FTP

TBLEDI.FieldByName('FTPIDENTTIPOREGISTRO').ASSTRING :=(Copy(LINHA,01,03));

TBLEDI.FieldByName('FTPNUMEROCONTROLETRANSMISSAO').ASSTRING :=(Copy(LINHA,04,05));

TBLEDI.FieldByName('FTPQUANTREGISTROSTRANSACAO').ASSTRING :=(Copy(LINHA,09,09));

TBLEDI.FieldByName('FTPNUMEROTOTALVALORES').ASSTRING :=(Copy(LINHA,18,17));

TBLEDI.FieldByName('FTPCATEGORIAOPERACAO').ASSTRING :=(Copy(LINHA,35,01));

TBLEDI.FieldByName('FTPESPACO').ASSTRING :=(Copy(LINHA,36,93));

end;

TBLEDI.post;//Salva tabela

end else

TABELAEDI.SQL.CLEAR;

TABELAEDI.SQL.ADD('SELECT * FROM IMPORTACAOSCANIA');

TABELAEDI.ExecSQL;

TABELAEDI.OPEN;

end;

a mais uma coisa. muito obrigada mesmo pela sua ajuda.

sem sua ajuda não teria conseguido. :rolleyes:

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...