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.
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 ,';')
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.