Bom Dia Galera, estou com o seguinte problema: - Na execução do relatório que estou criando aparece os erros anexo. E também o skip, no final não está fazendo pular a linha, alguem será que poderia me dar uma luz? a Lógica é essa: Código: FOR EACH item NO-LOCK WHERE item.it-codigo >= c-ini-codigo AND item.it-codigo <= c-fim-codigo: run pi-acompanhar in h-acomp ('Itens: ' + STRING(ITEM.it-codigo)). FIND FIRST item-uni-estab NO-LOCK WHERE item-uni-estab.it-codigo = ITEM.it-codigo NO-ERROR. FIND FIRST familia NO-LOCK WHERE familia.fm-codigo = item.fm-codigo NO-ERROR. FIND FIRST pr-it-per NO-LOCK WHERE pr-it-per.it-codigo = ITEM.it-codigo NO-ERROR. FIND FIRST preco-item NO-LOCK WHERE preco-item.it-codigo = ITEM.it-codigo NO-ERROR. ASSIGN CF = IF item.compr-fabric = 1 THEN "Comprado" ELSE "Fabricado". ASSIGN preco-medio = pr-it-per.val-unit-ggf-m[1] + pr-it-per.val-unit-mat-m[1] + pr-it-per.val-unit-mob-m[1]. PUT STREAM str-rp ITEM.it-codigo ";" item.desc-item ";" ITEM.cod-estabel ";" item.fm-codigo ";" familia.descricao ";" ITEM.un ";" CF /* <--- Comprado ou Fabricado */ ";" item-uni-estab.preco-base ";" item.data-base ";" item.preco-repos ";" item.data-ult-rep ";" item.preco-ul-ent ";" item.data-ult-ent ";" preco-item.preco-venda ";" preco-medio ";" item.preco-fiscal ";" item.class-fiscal ";" item.aliquota-ipi SKIP. END.
Ola. Antes de vc fazer o put, teste se existe a tabela com o registro desejado, caso não exista não deixe continuar o programa. quanto ao SKIP, tente mudar para chr(13). Espero ter ajudado. []'s
Felix, primeiramente obrigado pelo retorno. Agora, eu quero que apareça sem valor quando o registro estiver zerado. Também tentei usar o CHR(13) e também não deu certo. Atenciosamente
Ola Turks. Quando vc da um put em uma tabela, a mesma deve existir para que vc possa mostrar os dados. se eu entendi o que vc deseja faça o seguinte, crie duas variaveis que são os campos do put no qual vc esta colocando e atribua valor somente quando existir dados na tabela. Algo do tipo assim. find tabela1 where tabela1.codigo = x no-lock no-error. find tabela2 where tabela2.codigo = x no-lock no-error. if avail tabela1 then assign x-dados1 = tabela1.x-codigo x-dados2 = tabela2.x-preco. put tabela2.teste x-dados1 x-dados2 skip. Não esqueça de zerar as variaveis. Espero ter ajudado []'s
Ou, no comando PUT, verifique se o registro está disponivel: Código: PUT STREAM str-rp ITEM.it-codigo ";" item.desc-item ";" ITEM.cod-estabel ";" item.fm-codigo ";" familia.descricao ";" ITEM.un ";" CF /* <--- Comprado ou Fabricado */ ";" item-uni-estab.preco-base ";" item.data-base ";" item.preco-repos ";" item.data-ult-rep ";" item.preco-ul-ent ";" item.data-ult-ent ";" IF AVAIL preco-item THEN preco-item.preco-venda ELSE 0 ";" preco-medio ";" item.preco-fiscal ";" item.class-fiscal ";" item.aliquota-ipi SKIP. Espero ter ajudado.