Fórum me ajudem nessa procedure #275222
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
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
Curtir tópico
+ 0
Responder
Posts
02/04/2005
Raserafim
fernando, ao invés de vc fazer uma condição para testar se foi fornecido um código, vc pode utilizar o operador LIKE.
e no programa na hora de passar o parâmetro, caso não tenha nenhum valor vc passaria como parâmetro o símbolo de porcentagem ´¬´
obs: use o variant pois pode ser tanto número (caso tenha sido fornecido o código) como texto (caso n tenha nenhum código)
essa é apenas uma outra maneira
...Cod_Cliente LIKE :cliente ...
e no programa na hora de passar o parâmetro, caso não tenha nenhum valor vc passaria como parâmetro o símbolo de porcentagem ´¬´
...ParamByName(´Cliente´).variant := ´¬´;
obs: use o variant pois pode ser tanto número (caso tenha sido fornecido o código) como texto (caso n tenha nenhum código)
essa é apenas uma outra maneira
Responder
Gostei + 0
02/04/2005
Raserafim
desculpa uma coisa
...Cod_Cliente LIKE = :cliente ...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)