GARANTIR DESCONTO

Fórum erro na procedure (execute statement) #50247

02/04/2005

0

nao sei se essa procedure esta certa , mas me deem uma luz

BEGIN
FOR
SELECT PEDIDO.COD_REP as Codigo,
REP.NOME as Nome,
COUNT(PEDIDO.NUMERO) as QTDE_VENDA,
SUM(Pedido.Total) AS TOTAL,
SUM(Pedido.Valor_Desconto) Desconto,
sum(pedido.desconto_extra) Extra
FROM PEDIDO
INNER JOIN REP ON PEDIDO.COD_REP = REP.CODIGO
INNER JOIN TIPO_MOV ON PEDIDO.COD_TIPO_MOV = TIPO_MOV.CODIGO
WHERE
PEDIDO.DATA_FATURAMENTO BETWEEN :DATA_INI AND :DATA_FIM
and Pedido.Faturado = ´S´
and Pedido.Cancelado = ´N´
and Pedido.Cod_Loja = 1
GROUP BY PEDIDO.COD_REP,REP.NOME
ORDER BY 4 DESC
INTO :CODIGO,:NOME,:QTDE_VENDA,:TOTAL,:DESCONTO,:EXTRA DO
BEGIN

AQUI QUE ESTA O PROBLEMA, COMO FAÇO PARA COLOCAR ESSA CONDIÇÃO, PQ NAO SEI USAR execute statement PARA QUE QUANDO O USUARIO INFORMAR O CLIENTE ELE FILTRA POR CLIENTE, SE ELE NAO COLOCAR ELE PESQUISA TODOS

if ( :cliente <> 0 ) then
begin
vSQL = ´AND Pedido.Cod_Cliente = ´ || :cliente;
end

execute statement vSQL;
/* Condição */

SUSPEND;
END
END


Fernando

Fernando

Responder

Posts

02/04/2005

Afarias

se vc vai usar execute statement então, TODO o comando (select) tem q estar na sua variável vSQL, e não apenas uma parte, entende?!

{...}

vSQL = ´select <<campos>> from etc...´;
if (cliente <> 0) then
  vSQL = vSQL || ´ AND Pedido.Cod_Cliente = ´ || cast(cliente as varchar(x)); 

{...}



uma outra solução para o q vc deseja (sem execute statement) seria:

select ....
where ...
and (:cliente = 0 or Pedido.Cod_Cliente = :cliente)



T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar