Dica Importacao Arquivo Texto

Discussão em 'Outros/Diversos' iniciado por alexandretm, Junho 27, 2011.

  1. alexandretm

    alexandretm Membro Participativo

    Caros Colegas, estou com um problema de importacao de arquivo texto. No arquivo consta campos separados por ";" assim ajuda a fazer tal importacao, o problema é que existem linhas que contem campo informando o pallet , outras linhas nao tem pois sao as bobinas, segue exemplo do que falo.

    linha 1 :

    NOTA001;DT-EMISSAO;NR-PALLET;PESO;VALOR;

    linha 2 :
    NOTA001;DT-EMISSAO;NR-PALLET;NR-BOBINA;PESO;VALOR;

    Minha duvida é como identificar a linha que contem pallet e qual nao tem.
    Arquivo original abaixo, resalto que aqui so estou mostrando 2 linhas, o arquivo pode conter N linhas
    002222;00000000000;22/06/2011;filme1;X40186/02 ;0000665;0000000281,00;0000153;0000720
    002223;00000000000;22/06/2011;filme2;X40186/02 ;B1962564;0000665;0000000141,00;0000153;0000720

    o programa que fiz é este, mas ele nao cosegue identificar isto, ainda nao sei como resolver tal problema, se puderem me ajudar, ficarei muito grato.

    Arquivos Anexados:

  2. giandalfovo

    giandalfovo Membro Participativo

    há somente estas duas variações?
    talvez a função NUM-ENTRIES ajude, onde você consegue ver quantas entradas existem na linha e tratar de acordo com a necessidade.

    ex:
    Código:
    NUM-ENTRIES(c-linha  ,';')
  3. LFBuozi

    LFBuozi Membro Participativo

    Cara, este arquivo de importação está bem irregular e vai ser difícil tratar isto.
    Se você usar o import wizard do MySQL ou SQL Server, ele vão encrencar com este detalhe. O ideal seria ter o campo de bobina em branco, mas ainda separado com o ";", assim:
    Código:
    002222;00000000000;22/06/2011;filme1;X40186/02 ; ;0000665;0000000281,00;0000153;0000720
    002223;00000000000;22/06/2011;filme2;X40186/02 ;B1962564;0000665;0000000141,00;0000153;0000720
    
    Mas, encarando o problema, podemos usar a solução indicada por giandalfovo onde:
    Código:
    PROCEDURE pi-criar.
        CREATE tt-docum-est.
        ASSIGN tt-docum-est.nro-docto   = entry(1,c-linha,";")
               tt-docum-est.cgc         = entry(2,c-linha,";")
               tt-docum-est.dt-emissao  = date(entry(3,c-linha,";"))
               tt-docum-est.it-codigo   = entry(4,c-linha,";")
               tt-docum-est.pallet      = entry(5,c-linha,";").
        if NUM-ENTRIES(c-linha  ,';') = 10 then
               assign tt-docum-est.lote        = entry(6,c-linha,";")
                   tt-docum-est.largura     = int(entry(7,c-linha,";"))
                   tt-docum-est.quantidade  = dec(entry(8,c-linha,";"))
                   tt-docum-est.diin        = int(entry(9,c-linha,";"))
                   tt-docum-est.diex        = int(entry(10,c-linha,";")) .
        else
               assign tt-docum-est.largura     = int(entry(6,c-linha,";"))
                   tt-docum-est.quantidade  = dec(entry(7,c-linha,";"))
                   tt-docum-est.diin        = int(entry(8,c-linha,";"))
                   tt-docum-est.diex        = int(entry(9,c-linha,";")) .
    
    END PROCEDURE.
    
  4. alexandretm

    alexandretm Membro Participativo

    Amigos, irei testar, muito obrigado mesmo pela ajuda.Valeu e viva a comunidade 4 each. :D

Compartilhe esta Página