Bom dia pessoal. No código abaixo estou com o seguinte problema: A variável chamada piCCusto recebe o código dos Centros de Custo que possuo aqui na empresa, mas, nem sempre ela será utilizada, queria saber se existe outra forma a não ser criar um IF dentro do meu código para verificar esta condição. No Oracle eu consigo analisar se o parâmetro que estou passando possui valor ou não na hora de atribuir no campo de comparação. O Progress possui um valor especifico que eu possa comparar e ele desconsiderar determinada comparação? Código: DEF VAR piCCusto AS CHARACTER FORMAT "X(50)" INITIAL "50300". FOR EACH pim_pedido WHERE pim_pedido.pim_cod_estab = "UFL" AND pim_pedido.pim_ccusto = piCCusto AND pim_pedido.pim_ped_nivel < 2 AND pim_pedido.pim_situacao <> "E" AND pim_pedido.pim_situacao <> "A" AND pim_pedido.pim_situacao <> "R" NO-LOCK: IF AVAIL pim_pedido THEN DO: DISP pim_pedido.pim_ccusto. END. END.
Voce pode fazer assim: Código: DEF VAR piCCusto AS CHARACTER FORMAT "X(50)" INITIAL "50300". FOR EACH pim_pedido WHERE pim_pedido.pim_cod_estab = "UFL" AND (if piCCusto <> "" then pim_pedido.pim_ccusto = piCCusto else pim_pedido.pim_ccusto <> "") AND pim_pedido.pim_ped_nivel < 2 AND pim_pedido.pim_situacao <> "E" AND pim_pedido.pim_situacao <> "A" AND pim_pedido.pim_situacao <> "R" NO-LOCK: DISP pim_pedido.pim_ccusto. END. Ou utilizar uma query. Código: def var qh as handle. def var vtemp as char. DEF VAR piCCusto AS CHARACTER FORMAT "X(50)" INITIAL "50300". if piCCusto <> "" then vtemp = "FOR EACH pim_pedido WHERE pim_pedido.pim_cod_estab = "UFL" AND pim_pedido.pim_ccusto = " + quoter(piCCusto). else vtemp = "FOR EACH pim_pedido WHERE pim_pedido.pim_cod_estab = "UFL" AND. vtemp = vtemp + "pim_pedido.pim_ped_nivel < 2 AND pim_pedido.pim_situacao <> "E" AND pim_pedido.pim_situacao <> "A" AND pim_pedido.pim_situacao <> "R" NO-LOCK". create query qh. qh:set-buffers( buffer pim_pedido:handle ). qh:query-prepare(vtemp). qh:query-open. do while qh:get-next. DISP pim_pedido.pim_ccusto. END. PS: Em ambos os casos não precisa utilizar o "if avail" dentro do "for each" ou "do while".