Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido) EDI PROGRAMACAO PECA/MATERIAL
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
MICHELI_MARTINS
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?

Micheus
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:
CODE
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
MICHELI_MARTINS
então ms sera que a separacao das linhas é feita pela identificaçao do registro? se você reparar existem linhas que já começam com numeros e não com o id...
MICHELI_MARTINS
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.
Micheus
QUOTE(MICHELI_MARTINS @ 29/03/2009 - 13:06) *
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.gif
CODE
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


QUOTE(MICHELI_MARTINS @ 29/03/2009 - 22:51) *
...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 smile.gif)
QUOTE(MICHELI_MARTINS)
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:
CODE
### 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.:
CODE
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;
MICHELI_MARTINS
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.gif
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.