Bom dia!! Eu tenho um relatótio pra desenvolver, no qual eu tenho tres parametros, porem os 2 mais simples estou tendo problema de duplicação: o caso é bem simples, são tres toggle box, um de atualização e os outros dois (mais simples) é somente para selecionar quais os registros que serão exibidos de acordo com uma variavel do tipo log. para trazer todos os registros eu dei um for each. Até ai ele executa normalmente. para fazer a seleção de quais registros eu quero trazer, eu criei um buffer pois o progress não deixa eu repetir um for each de outro, mas quando eu executo, ele ta exibindo tanto a tabela normal quanto o buffer (traz o mesmo registro duas vezes). Como faço para anular a exibição de um destes?? Obrigado desde Já!!!
FOR EACH ITEM NO-LOCK WHERE ITEM.it-codigo >= tt-param.tt-ini-it-codigo AND ITEM.it-codigo <= tt-param.tt-fin-it-codigo AND ITEM.fm-codigo >= tt-param.tt-ini-fm-codigo AND ITEM.fm-codigo <= tt-param.tt-fin-fm-codigo AND ITEM.fm-cod-com >= tt-param.tt-ini-fm-cod-com AND ITEM.fm-cod-com <= tt-param.tt-fin-fm-cod-com, EACH fam-comerc NO-LOCK WHERE fam-comerc.fm-cod-com = ITEM.fm-cod-com, EACH familia NO-LOCK WHERE familia.fm-codigo = ITEM.fm-codigo: RUN pi-acompanhar IN h-acomp (INPUT ITEM.it-codigo). ASSIGN l-ind-item-fat = YES. DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. /* ******************** Simula = NO ******************** */ IF tt-param.tt-par-simula = NO THEN DO: IF NOT ITEM.ind-item-fat = NO THEN DO: FIND bf-ITEM OF ITEM WHERE bf-item.ind-item-fat = NO EXCLUSIVE-LOCK NO-ERROR. ASSIGN bf-ITEM.ind-item-fat = YES. RELEASE bf-ITEM. END. END. /* ******************* Item faturavel ******************* */ IF tt-param.tt-par-fat = NO THEN DO: FIND bf-familia OF familia. FIND bf-fam-comerc OF fam-comerc. FOR EACH bf-item WHERE bf-item.ind-item-fat = NO, EACH bf-familia WHERE bf-familia.fm-codigo = bf-ITEM.fm-codigo, EACH bf-fam-comerc WHERE bf-fam-comerc.fm-cod-com = bf-ITEM.fm-cod-com: DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. END. END. /* ******************* Item não faturavel ******************* */ IF tt-param.tt-par-no-fat = NO THEN DO: FIND bf-familia OF familia. FIND bf-fam-comerc OF fam-comerc. FOR EACH bf-item WHERE bf-item.ind-item-fat = YES, EACH bf-familia WHERE bf-familia.fm-codigo = bf-ITEM.fm-codigo, EACH bf-fam-comerc WHERE bf-fam-comerc.fm-cod-com = bf-ITEM.fm-cod-com: DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. END. END. END.
Fica do mesmo jeito. eu pensei em: se um toggle box for setado pelo usuário, ele desabilita as funções dos outros, porem não sei como fazer isso. será que pode funcionar?
eu modifiquei o código para que os disp fiquem mais isoladom ficou assim: /* ******************** Corpo do Relatório ******************** */ FOR EACH ITEM NO-LOCK WHERE ITEM.it-codigo >= tt-param.tt-ini-it-codigo AND ITEM.it-codigo <= tt-param.tt-fin-it-codigo AND ITEM.fm-codigo >= tt-param.tt-ini-fm-codigo AND ITEM.fm-codigo <= tt-param.tt-fin-fm-codigo AND ITEM.fm-cod-com >= tt-param.tt-ini-fm-cod-com AND ITEM.fm-cod-com <= tt-param.tt-fin-fm-cod-com, EACH fam-comerc NO-LOCK WHERE fam-comerc.fm-cod-com = ITEM.fm-cod-com, EACH familia NO-LOCK WHERE familia.fm-codigo = ITEM.fm-codigo: /* ******************** Simula = YES ******************** */ IF tt-param.tt-par-simula = YES THEN DO: ASSIGN l-ind-item-fat = YES. RUN pi-acompanhar IN h-acomp (INPUT ITEM.it-codigo). DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. END. /* ******************** Simula = NO ******************** */ ELSE DO: ASSIGN l-ind-item-fat = NO. IF NOT ITEM.ind-item-fat = NO THEN DO: FIND bf-ITEM OF ITEM WHERE bf-item.ind-item-fat = NO EXCLUSIVE-LOCK NO-ERROR. ASSIGN bf-ITEM.ind-item-fat = YES. RELEASE bf-ITEM. END. END. /* ******************* Item faturavel ******************* */ IF tt-param.tt-par-fat = NO THEN DO: ASSIGN l-ind-item-fat = NO. FIND bf-familia OF familia. FIND bf-fam-comerc OF fam-comerc. FOR EACH bf-item WHERE bf-item.ind-item-fat = NO, EACH bf-familia WHERE bf-familia.fm-codigo = bf-ITEM.fm-codigo, EACH bf-fam-comerc WHERE bf-fam-comerc.fm-cod-com = bf-ITEM.fm-cod-com: IF AVAIL bf-item THEN DO: RUN pi-acompanhar IN h-acomp (INPUT ITEM.it-codigo). DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. END. ELSE LEAVE. END. END. /* ******************* Item não faturavel ******************* */ IF tt-param.tt-par-no-fat = NO THEN DO: ASSIGN l-ind-item-fat = YES. FIND bf-familia OF familia. FIND bf-fam-comerc OF fam-comerc. FOR EACH bf-item WHERE bf-item.ind-item-fat = YES, EACH bf-familia WHERE bf-familia.fm-codigo = bf-ITEM.fm-codigo, EACH bf-fam-comerc WHERE bf-fam-comerc.fm-cod-com = bf-ITEM.fm-cod-com: IF AVAIL bf-item THEN DO: RUN pi-acompanhar IN h-acomp (INPUT ITEM.it-codigo). DISP STREAM str-rp ITEM.it-codigo ITEM.desc-item ITEM.fm-cod-com fam-comerc.descricao ITEM.fm-codigo familia.descricao ITEM.un ITEM.ind-item-fat l-ind-item-fat WITH FRAME f-item-a. DOWN STREAM str-rp WITH FRAME f-item-a. END. ELSE LEAVE. END. END. END. porém ele ainda ta executando todos os disp ao mesmo tempo. como faço pra cancelar os outros, como sitei no post anterior?