Usuário com melhor resposta
Filtro de consulta

Pergunta
-
Boa tarde , Galera
Estou usando o Report Service do Sql 2000
No caso criei um parametro com um filtro para o usuario onde retorna o nome do produto que ele quer consultar e a mesma tem varios produtos , como faço para colocar um registro nesta tabela como exemplo "Todos" para que o usuario visualize todos os produtos da lista e não apenas 1 item ?
Att,
Cristiano
Respostas
-
Okay...
esse select é apenas para retornar as descrições dos filtros não é isso? Então nele você faz.
select "todos" as descricao, -1 as codigo
union
select distinct a.descricao,a.codigo from express a, dim_produto_express b
where a.codigo = b.codproduto
Então no seu outro select que retorna a consulta dos produtos relacionados com clientes você usa o CASE.
where codigo = CASE @codigo when -1 then codigo
else @codigo end
Rafael Krisller
-
Cristiano,
No seu segundo DataSet (
SELECT * FROM DIM_PRODUTO_EXPRESS
)
que você irá usar o CASE ,veja:
SELECT * FROM DIM_PRODUTO_EXPRESS
where CODPRODUTO = Case @codigo when -1 then CODPRODUTO
else @codigo end
Então você não precisar usar o Filters.
No primeiro DataSet você não precisa usar o CASE não.
[]'s
Rafael Krisller
-
-
Todas as Respostas
-
Cristiano,
No seu filtro você insere o "Todos" com o codigo -1 por exemplo ( um código que não exista produto. ).Então na query do seu dataset, ou se estiver utilizando procedure não tem problema, basta fazer um case no seu where. Exemplo:
Select Desc_produto, Nom_cli, cod_produto, codigo_venda
from produto, cliente, vendas
where cod_produto = case @Cod_prod when -1 then cod_produto
else @cod_prod end
and cod_produto = codigo_venda
Alguma coisa desse tipo. Não sei a estrutura da sua tabela, então tentei simular apenas para ver o que você tem que fazer no CASE.
[]'s
Rafael Krisller
-
-
-
select 0 as codigo, 'Todos' as nome, " as ordem
union
select codigo, nome, nome as ordem
from produto
order by ordem
Assim vai listar "Todos" no RS ..
dae na sua procedure vc faiz
-
-
Cristiano ..
Diga exatamente oq vc quer fazer.
Voce quer ter um drop no seu relatorio para a pessoa selecionar os Tipo de produto a serem pesquisado ?
Ex: um drop tem os campos 'Todos', 'Futebol', 'Volei', 'Roupas'
e a partir dessi Drop q ele selecionar vc quer fazer a sua pesquisa ?
diga oq vc quer exatamente para assim podermos ajuda-lo.
Rafael
-
Okay...
esse select é apenas para retornar as descrições dos filtros não é isso? Então nele você faz.
select "todos" as descricao, -1 as codigo
union
select distinct a.descricao,a.codigo from express a, dim_produto_express b
where a.codigo = b.codproduto
Então no seu outro select que retorna a consulta dos produtos relacionados com clientes você usa o CASE.
where codigo = CASE @codigo when -1 then codigo
else @codigo end
Rafael Krisller
-
Rafael ,
Estou usando 2 DataSet o Primeiro uso uma tabela com os campos Codigo,Descricao , esta tabela me retorna a descricão do Produto no Filtro, neste DataSet uso a seguinte Intrução.
SELECT DISTINCT A.CODIGO,A.DESCRICAO FROM EXPRESS A, DIM_PRODUTO_EXPRESS B
WHERE A.CODIGO = B.CODPRODUTOO segundo Dataset me retorna o faturamento destes produtos que esta em uma tabela Matrix , como esta abaixo.
SELECT * FROM DIM_PRODUTO_EXPRESS
Eu relaciono o campo filtro com a tabela nas propriedades da tabela na aba Filters , deste modo :
=Fields!PRODUTO.Value = = Parameters!Produto.Value
Na instrução que vc me envio consegui retornar o campo "Todos" no filtro , desta forma :
SELECT -1 AS CODIGO, 'TODOS' AS DESCRICAO
UNION
SELECT DISTINCT A.CODIGO,A.DESCRICAO FROM EXPRESS A, DIM_PRODUTO_EXPRESS B
WHERE A.CODIGO = B.CODPRODUTO and A.CODIGO = CASE CODIGO WHEN -1 THEN CODIGO
ELSE CODIGO ENDmas não consegui relacionar com a tabela de faturamento "DIM_PRODUTO_EXPRESS"
Att,
Cristiano
-
Cristiano,
No seu segundo DataSet (
SELECT * FROM DIM_PRODUTO_EXPRESS
)
que você irá usar o CASE ,veja:
SELECT * FROM DIM_PRODUTO_EXPRESS
where CODPRODUTO = Case @codigo when -1 then CODPRODUTO
else @codigo end
Então você não precisar usar o Filters.
No primeiro DataSet você não precisa usar o CASE não.
[]'s
Rafael Krisller
-
-