none
Relatório CRM RRS feed

  • 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.

    terça-feira, 21 de junho de 2011 13:52

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.ticketnumber

    FROM

    FIlteredIncident

    quarta-feira, 29 de junho de 2011 18:04

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]
    terça-feira, 21 de junho de 2011 22:51
  • 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.ticketnumber

    FROM

    FIlteredIncident

    quarta-feira, 29 de junho de 2011 18:04
  • 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
    quarta-feira, 29 de junho de 2011 18:07
    Moderador
  • é a que está sendo executada, em todo do projeto do relatório só tenho isso de query.

    Sou iniciantes nestes relatórios, por isso não sei o que fazer.

    quarta-feira, 29 de junho de 2011 18:14
  • 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
    quarta-feira, 29 de junho de 2011 18:30
    Moderador
  • 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.ticketnumber

    FROM

    Incident

    WHERE

    incident.customeridname  in(@customeridname)

     

    DS_PARAMETRO

    SELECT

    DISTINCT FilteredIncident.customeridname

    FROM FilteredIncident

     

    só que não funcionou, o que pode ser?

    quarta-feira, 29 de junho de 2011 19:05
  • 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
    quarta-feira, 29 de junho de 2011 19:09
    Moderador
  • 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.

    quarta-feira, 29 de junho de 2011 19:41
  • 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
    quarta-feira, 29 de junho de 2011 19:43
    Moderador
  • 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.ticketnumber

    FROM

    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

    quarta-feira, 29 de junho de 2011 19:45
  • 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
    quarta-feira, 29 de junho de 2011 19:51
    Moderador
  • sim, eu fiz o layout de um formulário, só preciso agora que esse formulário exiba dados que possuem ocorrencia e com assunto selecionado.
    quarta-feira, 29 de junho de 2011 19:57
  • 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
    quarta-feira, 29 de junho de 2011 20:16
    Moderador
  • deu erro nas variaveis @assunto e @Assunto, disse que não está declarado.

     

    CREATE PROCEDURE dbo.BuscaChamados fica dessa forma mesmo?

    quarta-feira, 29 de junho de 2011 20:41
  • também deu erro no PROCEDURE
    quarta-feira, 29 de junho de 2011 20:41
  • 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)
    AS
    IF(@Chamado IS NULL AND @Assunto IS NULL)
    PRINT('ERRO')
    IF(@Chamado IS NULL AND @Assunto IS NOT NULL)
    BEGIN
    SELECT Numero, Assunto
    FROM Chamados
    WHERE Assunto LIKE '%'+@Assunto+'%'
    END
    IF(@Chamado IS NOT NULL AND @Assunto IS NULL)
    BEGIN
    SELECT Numero, Assunto
    FROM Chamados
    WHERE Numero = @Chamado
    END
    IF(@Chamado IS NOT NULL AND @Assunto IS NOT NULL)
    BEGIN
    SELECT Numero, Assunto
    FROM Chamados
    WHERE Numero = @Chamado
    AND Assunto LIKE '%'+@Assunto+'%'
    END
     
     2 - 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
    quarta-feira, 29 de junho de 2011 20:55
    Moderador
  • 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
    quinta-feira, 30 de junho de 2011 16:51
    Moderador
  • Fabrizzio,

    boa tarde!

    estou com dificuldades.

     

     2 - Em seu relatorio (No reporting services agora), crie os parametros Chamado e Assunto. - Isso é no Visual Studio também?

    quinta-feira, 30 de junho de 2011 18:27
  • os tópicos 1 e 3 vão todos no único dataset que criei?
    quinta-feira, 30 de junho de 2011 18:31
  • 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
    quinta-feira, 30 de junho de 2011 18:32
    Moderador
  • 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
    quinta-feira, 30 de junho de 2011 18:38
    Moderador
  • no código que você me enviou, eu vou substituir o numero, assunto e chamados por minhas variáveis e tabelas?

    quinta-feira, 30 de junho de 2011 18:38
  • Fabrizzio, acho que estou ficando cada vez mais perdida.

    você tem MSN?

    Obrigada.

    quinta-feira, 30 de junho de 2011 18:43
  • 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
    quinta-feira, 30 de junho de 2011 18:47
    Moderador
  • ok. Te adicionei.
    quinta-feira, 30 de junho de 2011 19:10
  • 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.

    terça-feira, 26 de julho de 2011 22:06