Usuário com melhor resposta
Relatório CRM

Pergunta
-
Bom dia,
criei um relatório utilizando o visual studio para ser emitido a partir do formulário.
Ao clicar para emitir ele não filtra somente o registro aberta, gera o relatório de todos os registros já cadastrados.
Que filtro eu devo utilizar?
Obrigada.
Respostas
-
Boa tarde Junior,
então, não estou sabendo qual filtro vou utilizar.
O Relatório será emitido da entidade solicitação, porém preciso que o filtro seja feito pelo cliente.
Minha query é a seguinte:
SELECT
FilteredIncident.pro_empreendimentoidname,
FilteredIncident.pro_unidadeempreendidname,
FilteredIncident.customeridname,
convert(char(10),FilteredIncident.pjo_datarealconclusaomatec,103) as 'FilteredIncident.pjo_datarealconclusaomatec',
FilteredIncident.description,
FilteredIncident.subjectidname,
FilteredIncident.ticketnumberFROM
FIlteredIncident
- Marcado como Resposta Suenne Pagoto de Almeida quinta-feira, 30 de junho de 2011 18:26
Todas as Respostas
-
Suenne,
Você adicionou algum filtro neste relatório? Este é o comportamento normal quando se carrega um relatório através do componente Report Viewer, é necessário enviar para o dataset do seu relatório os valores como parâmetros de filtragem.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
Boa tarde Junior,
então, não estou sabendo qual filtro vou utilizar.
O Relatório será emitido da entidade solicitação, porém preciso que o filtro seja feito pelo cliente.
Minha query é a seguinte:
SELECT
FilteredIncident.pro_empreendimentoidname,
FilteredIncident.pro_unidadeempreendidname,
FilteredIncident.customeridname,
convert(char(10),FilteredIncident.pjo_datarealconclusaomatec,103) as 'FilteredIncident.pjo_datarealconclusaomatec',
FilteredIncident.description,
FilteredIncident.subjectidname,
FilteredIncident.ticketnumberFROM
FIlteredIncident
- Marcado como Resposta Suenne Pagoto de Almeida quinta-feira, 30 de junho de 2011 18:26
-
Suane,
Se entendi direito, voce esta retornando o relatorio completo e nao filtrado conforme entradas do usuario é isso?
Se sim, algumas duvidas: Os parametros ja estão criados certo? Essa sua query é a que esta sendo executada no relatorio ou a mesma esta dentro de alguma procedure que é chamada por exemplo?
Oracle OCA11g, MCTS SQL Server 2008, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com http://www.tripletech.com.br/blog/ Twitter: @FabrizzioCaputo -
-
Suanne,
Ok, tambem não sei muito sobre o SSRS, mas creio que posso te ajudar, vamos la:
No reporting service, voce pode criar parametros, esses parametros são os dados que os usuarios vão digitar, os mesmos serão usados como variaveis em sua query.
Voce supor que voce criou o parametro [Data_de_inicio] e [Data_de_termino] para um relatorio de extração de chamado de um help desk por exemplo, portanto, a sua query seria algo mais ou menos assim:
SELECT * FROM CHAMADOS WHERE DATA BETWEEN @Data_de_inicio AND @Data_de_termino
Veja que é a mesma sintaxe que SQL Server normal, escrevendo a query manualmente, a unica diferenca é que os parametros serão ditos pelos usuarios.
Para se criar um parametro no SSRS 2008 com Visual Studio 2008
- Menu superior -> Exibir -> Dados do relatorio (Ultima opção): Na janela que abrir, deve contem 3 paginas e as fontes de dados do relatorio.
As pasta:
Campos internos -> Como o proprio nome diz, controle interno do relatorio, nao creio que voce ira precisar mexer em algo aqui.
Parametros -> Justamente os parametros que expliquei acima.
Imagens -> Fotos
Clique com o botão direito em [Parametros] -> Adicionar parametro -> O nome do parametro sera o nome da variavel, portanto eu recomendo a não utilização de caracteres especiais e espaços, o Promt é o que sera exibido ao lado da caixa de texto deste parametro, por exemplo: Data de inicio, depois voce pode decidir qual sera o tipo de dado, se permite valores em branco ou nulos, valores default, valores disponiveis, e o nivel de visibilidade, o nivel de visibilidade é importante voce conhecer:
São 3 tipos:
Visivel: Editavel e apresentado ao usuario
Oculto: Não editavel e escondido (Utilizado quando uma pagina ja mostra o relatorio com um parametro que foi previamente dito)
Interno: Controle interno seu
Qualquer duvida que eu possa ajudar, só perguntar.
Oracle OCA11g, MCTS SQL Server 2008, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com http://www.tripletech.com.br/blog/ Twitter: @FabrizzioCaputo -
Boa tarde Fabrizzio,
pensando por esse lado, então eu consigo resolver meu caso fazendo um parâmetro pelo nome do cliente.
Fiz dois datasets, o principal e do parÂmetro com nome do cliente, veja:
DS_PRINCIPAL
SELECT
Incident.pro_empreendimentoidname,
Incident.pro_unidadeempreendidname,
Incident.customeridname,
convert(char(10),Incident.pjo_datarealconclusaomatec,103) as 'Incident.pjo_datarealconclusaomatec',
Incident.description,
Incident.subjectidname,
Incident.ticketnumberFROM
Incident
WHERE
incident.customeridname in(@customeridname)
DS_PARAMETRO
SELECT
DISTINCT FilteredIncident.customeridname
FROM FilteredIncident
só que não funcionou, o que pode ser?
-
Suanne,
Qual query esta sendo apresentada em seu relatorio? se voce quer algo assim:
Se o usuario preencher o campo de qual usuario ele quer ver exibir o relatorio filtrado, se não exibir tudo, o que eu faria, criaria uma proc mais ou menos assim:
CREATE PROCEDURE dbo.ReturnReport
@Usuario VARCHAR(100)
as
IF(@Usuario = NULL)
BEGIN
SELECT * FROM SuaTabela
END
ELSE
BEGIN
SELECT * FROM SuaTabela WHERE USUARIO = @Usuario
END
E no reporting service, passaria apenas o exec da procedure e a variavel (que deve aceitar nulos) como parametro.
Oracle OCA11g, MCTS SQL Server 2008, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com http://www.tripletech.com.br/blog/ Twitter: @FabrizzioCaputo -
opa Fabrizzio,
acho que estou chegando la, criei dois parametros, assunto da solicitação e número da ocorrência.
Como faço pra isso funcionar como um lookup?
Exemplo:
Assunto = Manutenção então retorna somente as ocorrências desse assunto, como fazer?
Obrigada.
-
Suanne,
Vamos la, primeiramente eu deixaria toda sua logica dentro de uma procedure, o exemplo que dei acima acho que possa te ajudar....
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
veja como está até agora:
DS_PRINCIPAL
SELECT
FilteredIncident.pro_empreendimentoidname,
FilteredIncident.pro_unidadeempreendidname,
FilteredIncident.customeridname,
convert(char(10),FilteredIncident.pjo_datarealconclusaomatec,103) as 'FilteredIncident.pjo_datarealconclusaomatec',
FilteredIncident.description,
FilteredIncident.subjectidname,
FilteredIncident.ticketnumberFROM
FilteredIncident
WHERE
Filteredincident.ticketnumber in(@ticketnumber) AND FilteredIncident.subjectidname in(@subjectidname)
DS_PARAMETRO_ASSUNTO
SELECT
DISTINCT FilteredIncident.subjectidname
FROM FilteredIncident
DS_PATRAMETRO_TICKET
SELECT
DISTINCT FilteredIncident.ticketnumber
FROM FilteredIncident
-
Suanne,
Todos os seus selects irao retornar as mesmas colunas apenas com filtros diferentes?
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
Suanne,
Ok, então faça assim:
Delete todos seus DataSets e mantenha apenas 1, não é necessario mais que um, uma vez que toda sua logica estara na sua procedure, então, va no SSMS abra uma nova janela de query e digite algo assim:
CREATE PROCEDURE dbo.BuscaChamados
@Assunto VARCHAR(100),
@Numero INT
AS
IF(@assunto IS NULL and @Numero IS NULL)
PRINT('ERRO')
IF(@assunto IS NULL and @Numero IS NOT NULL)
BEGIN
SELECT Campos
FROM TABELA
WHERE Numero_do_chamado = @Numero
END
IF(@assunto IS NOT NULL and @Numero IS NULL)
BEGIN
SELECT Campos
FROM TABELA
WHERE assunto LIKE '%'+@assunto+'%'
END
IF(@assunto IS NOT NULL and @Numero IS NOT NULL)
BEGIN
SELECT Campos
FROM TABELA
WHERE assunto LIKE '%'+@assunto+'%'
AND Numero_do_chamado = @Numero
END
Então, em seu DataSet, a unica query que voce deve colocar é: EXECUTE dbo.BuscaChamados @Numero = @ParametroDoNumeroDoChamado, @assunto = @ParametroDoAssuntoDoChamado, lembre-se que os 2 parametros devem aceitar nulos.
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
-
Suanne,Acho que me expressei errado, vamos la, step-by-step:Voce possui o Reporting service com um Data Source criado, neste relatorio, voce tem a opção de criar os data sets.O que voce deve fazer:1 - Acesse essa sua database que serve como base de dados para seu relatorio, e crie uma procedure como a de baixo, fique atenta que só é necessario adaptar os nomes das tabelas e colunas.CREATE PROCEDURE dbo.BuscarChamados@Chamado INT,@Assunto VARCHAR(100)ASIF(@Chamado IS NULL AND @Assunto IS NULL)PRINT('ERRO')IF(@Chamado IS NULL AND @Assunto IS NOT NULL)BEGINSELECT Numero, AssuntoFROM ChamadosWHERE Assunto LIKE '%'+@Assunto+'%'ENDIF(@Chamado IS NOT NULL AND @Assunto IS NULL)BEGINSELECT Numero, AssuntoFROM ChamadosWHERE Numero = @ChamadoENDIF(@Chamado IS NOT NULL AND @Assunto IS NOT NULL)BEGINSELECT Numero, AssuntoFROM ChamadosWHERE Numero = @ChamadoAND Assunto LIKE '%'+@Assunto+'%'END2 - Em seu relatorio (No reporting services agora), crie os parametros Chamado e Assunto.3 - Seu dataset deve conter a seguinte query:EXECUTE dbo.BuscarChamados @Chamado = @ParametroChamado, @Assunto = @ParametroAssuntoEXECUTE dbo.BuscarChamados @Chamado =@ParametroChamado, @Assunto = @ParametroAssunto
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Suenne,
Alguma novidade?
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
-
Suenne,
Isso mesmo, parametros são as variaveis que o usuario que estiver visualisando o relatorio vai colocar, para voce parametros são apenas variveis, para o usuario, parametros são os text box a serem preenchidos
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Suenne,
SIm, é apenas um data set que executa a procedure, dependendo dos valores que o usuario passar, ele ira gerar a query com filtro por chamado, por assunto, ou pelo 2.
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
-
Suenne, tenho sim, fabrizzio_caputo@hotmail.com.
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
Pessoal, boa noite.
Sou novo aqui mas já fiz alguns relatórios para o CRM 4.0 mas agora estou com um problema para os relatórios do CRM 2011.
Preciso criar um relatório que seja aplicado dentro do registro selecionado, passando assim como parâmetro o seu ID.
Dessa forma no CRM 4.0 era simples, abaixo um exemplo simples.
SELECT FULLNAME
FROM FILTEREDCONTACT
WHERE CONTACTID = '+@CRM_FilteredContact +'
Com apenas esse comando era possível que o relatório pegasse o ID do registro selecionado sem nenhum problema.
No CRM 2011 ao tentar o mesmo processo ele retorna o seguinte erro "Não é possível exibir o relatório rsProcessingAborted".
Busquei algumas informações a respeito mas todos os exemplos que encontram são criando relatórios utlizando o fetch xml que não é o meu caso.
Agradeço se puderem ajudar.