André Alves de Lima

Talking about Software Development and more…

Suporte ao Report Viewer no Visual Studio Express

Desde muitas versões atrás (eu me lembro com certeza desde a 2005), as edições Professional ou superiores do Visual Studio trazem o controle do Report Viewer instalado automaticamente. Até a mais recente edição chamada “Visual Studio Community” (que eu mencionei neste outro post) traz o Report Viewer já instalado. Porém, isso não é o que acontece com o Visual Studio Express. Para as edições Express, é necessário instalar o controle do Report Viewer separadamente. E isso é o que abordarei no post de hoje.

Antes de continuar, gostaria de ressaltar que este artigo mostrará como adicionar o controle do Report Viewer no Visual Studio Express (de forma que você consiga utilizar o controle em algum Form para exibir um relatório). Porém, não é possível desenhar os relatórios direto no Visual Studio Express. O designer do Report Viewer infelizmente só está disponível nas edições Professional ou superiores do Visual Studio (e também está disponível no Visual Studio Community). A saída para gerar (desenhar) os relatórios nesse caso é utilizar uma ferramenta externa, como o “SQL Server 2012 Report Builder” (que também é uma ferramenta gratuita da Microsoft).

De qualquer forma, adicionar o controle do Report Viewer no Visual Studio Express é muito simples. O primeiro passo a ser executado é baixar e instalar a runtime do Report Viewer, que se chama “Microsoft Report Viewer 2012 Runtime“. [O Wennder Santos deu uma ótima dica nos comentários para quem está trabalhando com projetos web, que é utilizar o NuGet para instalar o controle. Muito mais fácil. Porém, para projetos Windows Forms eu ainda recomendo a instalação por fora do NuGet, senão em cada projeto o controle vai estar em um diretório diferente, aí não dá pra adicioná-lo na ToolBox do Visual Studio].

Uma vez instalada a runtime, abra o Visual Studio e crie um projeto do tipo “Windows Forms“. Com o novo projeto criado e aberto, vá até a caixa de ferramentas (Toolbox), clique com o botão direito em uma área livre e escolha a opção “Escolher itens” (“Choose Items“):

Na aba “Componentes do .NET Framework” (“.NET Framework Components“), clique em “Procurar” (“Browse“), vá até a pasta de instalação do Report Viewer (o diretório padrão é “C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewer“) e escolha uma das duas dlls disponíveis (a que tem final “WinForms” serve para desenvolvimento Windows Forms e a que tem final “WebForms” para desenvolvimento Web Forms – ASP.NET). No nosso caso, como o projeto de exemplo é do tipo Windows Forms, escolheremos a dll que tem final “WinForms“:

Uma vez adicionado o controle, ele aparecerá na caixa de ferramentas dentro da categoria “Geral” (“General“):

Você pode, então, arrastar esse controle para dentro de qualquer Form do seu projeto e utilizá-lo sem maiores complicações para exibir relatórios “rdlc” (locais) ou vindos de um servidor do SQL Server Reporting Services. A única limitação dele no Visual Studio Express é que você não conseguirá editar os relatórios (ou seja, o designer de relatórios não está disponível). Caso você tente utilizar a smart tag do controle do Report Viewer e escolher a opção “Criar um novo relatório” (“Design a new report“), enquanto nas edições Professional ou superiores do Visual Studio o designer do Report Viewer será aberto, nas edições Express nada acontecerá:

Para contornar essa limitação, como eu mencionei anteriormente, basta utilizar uma ferramenta externa para gerar o arquivo do relatório (como o SQL Server 2012 Report Builder) e fazer o uso do controle do Report Viewer para exibi-lo nas suas aplicações.

É isso aí. O post de hoje foi mais curto do que o normal, mas, de qualquer forma, espero que tenha ajudado as muitas pessoas que passam por essa dúvida sobre como adicionar o controle do Report Viewer no Visual Studio Express.

Quer ficar por dentro dos próximos artigos futuros e ainda por cima receber dicas que eu só compartilho por e-mail? Então inscreva-se aqui ou utilize o formulário logo abaixo.

André Lima

Image by Juhan Sonin used under Creative Commons
https://www.flickr.com/photos/juhansonin/5135576565

Newsletter do André Lima

* indicates required



Powered by MailChimp

36 thoughts on “Suporte ao Report Viewer no Visual Studio Express

  • Fala André, blz?
    Já tive a oportunidade de usar o report viwer em projetos web, inclusive estou terminando de escrever um post sobre isso.
    Sobre a instalação, da para fazer pelo NuGet também. O problema é que nas versões express, pelo que eu sei, o NuGet só está disponível a partir da 2012, confere?

    Abraços.
    Wennder Santos

    • andrealveslima disse:

      Olá Wennder! Muito obrigado pelo comentário!

      Realmente não tinha lembrado do NuGet, nem imaginava que o controle do Report Viewer pudesse estar no repositório do NuGet.. Isso faz sentido para projetos web, mas, para projetos Windows Forms, como o controle cada hora vai estar em um diretório se você utilizar o NuGet, fica difícil adicionar o controle na ToolBox.. Portanto, para projetos desktop, acho que fica mais fácil instalar o Report Viewer por fora do NuGet mesmo.. Mas, para projetos web realmente faz todo o sentido.. E o NuGet dá pra ser utilizado até no Visual Studio 2010 via extension: http://docs.nuget.org/docs/start-here/installing-nuget

      Valeu! Abraço!
      André Lima

  • vinicius ribeiro disse:

    Olá amigos.
    Vi que saiu a versão 2015:
    http://www.microsoft.com/en-us/download/details.aspx?id=45496

    Aquele velho problema de não poder justificar um texto, será que foi corrigido?

    Abracos

    • andrealveslima disse:

      Olá Vinicius, obrigado pelo comentário!

      Ainda não conferi a versão 2015, mas, acredito que o velho problema de não conseguirmos justificar textos não deve ter sido resolvido.. Caso você descubra se essa feature foi implementada, conte aqui pra gente nos comentários..

      Abraço!
      André Lima

  • […] suporte ao desenvolvimento de novos relatórios nessa edição do Visual Studio. É possível adicionar o controle do Report Viewer para a exibição de relatórios existentes no Visual Studio E…, mas, para desenhar novos relatórios ou editar relatórios existentes, você precisaria utilizar o […]

  • Érik Xavier disse:

    Bom dia!

    Gostaria de saber, como que eu faço para utilizar um relatório criado no Report Builder no VS Express?
    Já instalei a extensão mas não sei como mostrar o relatório no meu projeto.

    • andrealveslima disse:

      Olá Érik,

      Salve o arquivo criado no SQL Server Report Builder utilizando a extensão “rdlc”.. Depois, no Visual Studio, adicione o arquivo ao projeto (copie para a pasta do projeto e adicione-o utilizando a opção “Add existing item”).. Feito isso, você conseguirá escolher esse relatório na lista “Choose report” do controle do Report Viewer (dê uma olhada no artigo acima)..

      Abraço!
      André Lima

  • Frederico Simões disse:

    Olá André,
    bom dia!

    Estou utilizando o Report Viewer na minha aplicação. Atualmente estou com o Visual Studio Community 2015 e não estou conseguindo resolver um problema que estou me confrontando. Eu tenho “n” relatórios e gostaria de utilizar em somente um controle report viewer, mas não estou conseguindo. Então fiquei pesando… “será que vou ter que utilizar um controle para cada relatório?” Minha aplicação vai ficar com muitos formulários só para relatório, é isso mesmo? Andei procurando na internet e a solução que encontrei foi essa mas não está dando certo. Será que poderia dar uma dica do que está errado no meu código? O código abaixo é apenas um teste para ver se iria funcionar o que encontrei na internet.

    Imports Microsoft.Reporting.WinForms

    Public Class Form1

    Dim intReport As Integer

    Private Sub LocalReport(ByVal selectReport As Integer)

    Dim reportSelecionado = New ReportDataSource()

    ReportViewer1.LocalReport.DataSources.Clear()
    If (intReport = 1) Then
    ReportViewer1.LocalReport.ReportEmbeddedResource = “rViewer.conf.rdlc”
    reportSelecionado.Name = “confDS”
    reportSelecionado.Value = mcv_configuracaoBindingSource
    ReportViewer1.LocalReport.DataSources.Add(reportSelecionado)
    ElseIf (intReport = 2) Then
    ReportViewer1.LocalReport.ReportEmbeddedResource = “rViewer.malh.rdlc”
    reportSelecionado.Name = “malhDS”
    reportSelecionado.Value = mcv_malhaBindingSource
    ReportViewer1.LocalReport.DataSources.Add(reportSelecionado)
    End If
    ReportViewer1.RefreshReport()

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    mcv_configuracaoTableAdapter.Fill(confDS.mcv_configuracao)
    mcv_malhaTableAdapter.Fill(malhDS.mcv_malha)
    ReportViewer1.RefreshReport()

    intReport = InputBox(“Digite um número”, “Report Viewer”)
    LocalReport(intReport)

    End Sub

    • andrealveslima disse:

      Olá Frederico,

      Pelo que testei, é mais ou menos isso mesmo.. Veja um exemplo que montei aqui rapidinho:

      Microsoft.Reporting.WinForms.ReportDataSource reportDataSource = new Microsoft.Reporting.WinForms.ReportDataSource();
      reportDataSource.Name = “DataSet1”; // Na verdade tem que ser o nome do DataSource que você definiu no seu relatório!
      reportDataSource.Value = dataSet.Tabela;
      reportViewer.LocalReport.DataSources.Clear();
      reportViewer.LocalReport.DataSources.Add(reportDataSource);
      reportViewer.LocalReport.ReportEmbeddedResource = “NomeDaSuaAplicacao.NomeDoRelatorio.rdlc”;
      this.reportViewer.RefreshReport();

      Está em C#, mas, você pode converter facilmente para VB.NET utilizando algum conversor online, como este:

      http://converter.telerik.com/

      Você pode baixar o exemplo do projeto que eu fiz para testar essa funcionalidade aqui:

      http://www.andrealveslima.com.br/files/artigos/reportviewervsexpress/ExemploReportViewerMultiRelatorios.zip

      Espero que ajude.. Qualquer coisa entre em contato novamente..

      Abraço!
      André Lima

      • Frederico Simões disse:

        Prezado André,
        Bom dia!

        Primeiramente gostaria de agradecer por sua ajuda ao fornecer um código fonte. Com certeza ajudou muito a resolver o meu problema. Depois de muita pesquisa na internet e ler bastante material, meu código ficou assim:

        Public Class frmReport

        Dim codRPT As Integer

        Private Sub LocalReport(ByVal digito As Integer)

        Dim relatorioCorrente = New Microsoft.Reporting.WinForms.ReportDataSource()

        If (digito = 1) Then
        mcv_malhaTableAdapter.Fill(geradorxmlDS.mcv_malha)
        relatorioCorrente.Name = “malhDS”
        relatorioCorrente.Value = geradorxmlDS.mcv_malha
        RV.LocalReport.DataSources.Clear()
        RV.LocalReport.DataSources.Add(relatorioCorrente)
        RV.LocalReport.ReportEmbeddedResource = “ReportViewer.rpt1.rdlc”
        ElseIf (digito = 2) Then
        mcv_modbusTableAdapter.Fill(geradorxmlDS.mcv_modbus)
        relatorioCorrente.Name = “modbDS”
        relatorioCorrente.Value = geradorxmlDS.mcv_modbus
        RV.LocalReport.DataSources.Clear()
        RV.LocalReport.DataSources.Add(relatorioCorrente)
        RV.LocalReport.ReportEmbeddedResource = “ReportViewer.rpt2.rdlc”
        ElseIf (digito = 3) Then
        mcv_registroTableAdapter.Fill(geradorxmlDS.mcv_registro)
        relatorioCorrente.Name = “regiDS”
        relatorioCorrente.Value = geradorxmlDS.mcv_registro
        RV.LocalReport.DataSources.Clear()
        RV.LocalReport.DataSources.Add(relatorioCorrente)
        RV.LocalReport.ReportEmbeddedResource = “ReportViewer.rpt3.rdlc”
        End If
        RV.RefreshReport()

        End Sub

        Private Sub ComboBox1_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

        LocalReport(ComboBox1.SelectedItem.ToString)

        End Sub

        End Class

        Obrigado mais uma vez de ajuda de sempre!

        • andrealveslima disse:

          Sensacional, Frederico! Fico feliz que você tenha conseguido resolver o seu problema.. Qualquer coisa entre em contato novamente!

          Abraço!
          André Lima

  • Paulo Ferreira disse:

    Olá bom dia,
    obrigado pelas dicas que são muito interessantes. Já utilizei o reportviewer no Visual Studio 2008 e 2010, mas com o Visual Studio 2015 community edition, surge um problema, o reportviewer surge por debaixo do form e não permite o seu desenho no form. Vi o seu exemplo em C# e tem o reportviewer visivel no form. Há alguma propriedade específica ou que está se passando? Uso Vb.Net e reportviewer 12, mas com a versão 10 acontece o mesmo.
    Se puder ajudar, agradeço.
    Obrigado.

    • andrealveslima disse:

      Olá Paulo, obrigado pelo comentário!

      Nunca tive esse problema com o Visual Studio Community.. Inclusive eu escrevi um ebook sobre o Report Viewer utilizando de cabo a rabo a edição Community do Visual Studio.. Eu queria ter certeza que o leitor pudesse utilizar a versão gratuita do Visual Studio para conseguir fazer o que eu mostro no ebook (inclusive, o ebook está pra ser lançado em menos de um mês, caso você se interesse, assine a minha newsletter)..

      Será que tem como você postar uma screenshot pra eu entender certinho o que está acontecendo? Poste a screenshot em algum lugar (Dropbox por exemplo) e mande o link aqui.. Ou, se preferir, entre em contato comigo (meu e-mail está disponível na minha página de contato)..

      Abraço!
      André Lima

  • ERNANI CARLOS TORQUATO disse:

    Olá, boa tarde!
    Estou tendo um problema com o Chrome, que depois que saiu a versão que não utiliza o adobe como leitor de pdf todos os relatórios que exporto para pdf e tento abrir no navegador aparece em branco.
    Por acaso já está tendo esse problema ou já achou uma solução?
    Abraços.

    • andrealveslima disse:

      Olá Ernani, obrigado pelo comentário!

      Não estou tendo esse problema aqui.. Qual é exatamente a versão do Chrome que você está utilizando? Aqui estou com a última (46.0.2490.71 m).. Será que algum outro plugin não está causando esse problema? Você testou em um computador zerado, só com o Chrome instalado?

      Pesquisando sobre esse tema, a única thread que encontrei foi esta:

      Issue 488697: Chrome sends a blank page to the printer

      Mas, pelo que vi, o problema foi corrigido em poucas semanas (e já faz vários meses)..

      Abraço!
      André Lima

      • Ernani Torquato disse:

        Olá, consegui resolver, atualizei o Report Viewer para a versão 2015 e o problema acabou, mas para aqueles que utilizam a versão 2010 o problema ocorre no Chrome a partir dessa 46.0.xxxx.xx.
        Obrigado.

        • andrealveslima disse:

          Olá Ernani!

          Obrigado por ter voltado aqui e explicado como você conseguiu resolver.. Bom saber.. Agora se eu ouvir sobre esse problema daqui pra frente, sei que é só atualizar a versão e tudo deve ser resolvido..

          Abraço!
          André Lima

  • […] E qual o custo do Report Viewer? Zero! Ele vem instalado automaticamente no Visual Studio Professional ou superior e você consegue também adicionar o controle para exibição do Report Viewer nas edições Express do Visual Studio. […]

  • André Luiz disse:

    Boa noite, Estou com um Problema, e não consigo resolver.. o fato é que fiz a instalação do ReportViewer (2012,2015) testei com os dois, bom, instalei e não consegui encontrar onde foi instalado, ja procurei em tudo quanto foi lugar e nada.. poderia me da uma luz ? Obrigado!

    • andrealveslima disse:

      Olá André, tudo tranquilo?

      Qual edicao do Visual Studio você está utilizando? Um problema que eu vi na edicao Community do Visual Studio 2015 é que o Report Viewer nao vem instalado por padrao.. Você precisa ativá-lo durante a instalacao (ou depois de ter instalado indo até a lista de programas instalados)..

      Para ativá-lo você precisa ir até a lista de programas do Windows (Programs and Features), escolher o Visual Studio 2015 Community, clicar em “Change” (alterar) e, na tela que se abre, encontre e ative a opção “Microsoft SQL Server Data Tools”..

      Agora, se você estiver utilizando outra edicao, me responda aqui que eu tento te ajudar de outra forma..

      Abraco!
      André Lima

  • Valério Santos disse:

    Olá André. Eu estou a tentar usar o report viewer mas não consigo. Tem algum passo a passo?

    • andrealveslima disse:

      Olá Valério, obrigado pelo comentário!

      Qual edição do Visual Studio você está utilizando? Várias pessoas estão tendo dificuldades em utilizar o Report Viewer no Visual Studio 2015 porque a Microsoft alterou algumas coisas no instalador dessa versão.. Se esse for o seu caso, eu já escrevi um artigo detalhando esse processo, veja só:

      Cadê o Report Viewer no Visual Studio 2015?

      Se você estiver utilizando outra versão, por favor, dê maiores detalhes para eu tentar te ajudar de outra forma..

      Abraço!
      André Lima

  • Anderson Nunes disse:

    Não consigo acrescentar a ferramenta. Instalo porém a dll não aparece. O que devo fazer ou o que ainda falta fazer?

    • andrealveslima disse:

      Olá Anderson!

      Não sei o que dizer.. Funcionou perfeitamente em todos os computadores que eu executei os passos daquele link que passei.. Você poderia mandar mais detalhes (screenshots passo a passo do que você fez e onde você está tentando encontrar a dll)? Pode ser aqui ou, se preferir, por e-mail.. Meu endereço você encontra na minha página “Sobre“..

      Abraço!
      André Lima

  • Luiz Otávio Vasconcelos Silva disse:

    Boa noite André,

    Eu crio normalmente o relatório no Report Builder, salvo o mesmo como RDLC copio para o meu projeto, vinculo ele ao reportviw, mas quando eu rodo a aplicação é apresentado uma mensagem que não existe o Dataset que foi criado no reportbuilder, o que devo fazer para vincular o dataset do report builder no visual studio?

    • andrealveslima disse:

      Olá Luiz, obrigado pelo comentário!

      Qual é exatamente a mensagem de erro que você está recebendo? É importante notar que o nome do DataSource deve ser exatamente o mesmo nome que você utilizou no RDLC, inclusive maiúsculas e minúsculas..

      Se você quiser, prepara um projetinho com esse seu problema, sobe ele em algum lugar (tipo Dropbox ou OneDrive) e me manda o link que eu dou uma olhada..

      Abraço!
      André Lima

  • André de Souza Vieira disse:

    Bom dia.
    É possível abrir um rdlc criado no vs 2o15, pelo vs 2008?

    • andrealveslima disse:

      Olá André!

      Eu não saberia te dizer com 100% de certeza porque não tenho um ambiente com VS 2008 preparado aqui para testar.. Mas, eu acredito que sim.. Do Visual Studio 2015 para o 2013 e 2012 funciona com certeza porque eu já testei.. Mas, do 2015 para o 2008 não tenho certeza..

      Muito provavelmente sim, uma vez que o RDLC do Visual Studio 2015 ainda utiliza o mesmo esquema XML desenvolvido em 2008.. Não tivemos praticamente nenhuma evolução no RDLC do Visual Studio 2008 até hoje..

      Enfim, se você chegar a testar, volte aqui e conte para a gente se funcionou ou não..

      Abraço!
      André Lima

  • vinicius ribeiro disse:

    Alguém já usou o Reportviewer em windows forms? Tentei e não consegui pois não achei a DLL para windowsforms do Reportviewer 2015.

    • andrealveslima disse:

      Olá Vinicius!

      Você viu a resposta que eu dei ontem para o seu comentário no outro post? Eu não tive nenhum problema ao utilizar o Report Viewer com o Visual Studio 2015 e outros leitores do site também utilizam sem problema algum com o Windows Forms..

      Me explique melhor o que você quis dizer com “não tem a dll para usar com Windows Forms”.. Qual é exatamente o problema que você está tendo? De preferência, mande screenshots da sua tela.. Se preferir, entre em contato por e-mail para mandar mais detalhes.. contato arroba andrealveslima ponto com ponto br..

      Abraço!
      André Lima

  • […] dos controles do Report Viewer. Essa é a mesma runtime que temos que instalar para utilizar o Report Viewer no Visual Studio Express. A runtime do Report Viewer está disponível para download no site da Microsoft e você deve […]

  • Gilvani Ruoso disse:

    Consigo utilizar o Report Viewer com PHP ou mais especificamente com a Ferramenta de Desenvolvimento ScriptCase?

    • andrealveslima disse:

      Olá Gilvani, tudo tranquilo?

      Eu não tenho nenhuma experiência com o PHP, mas, pelo que pesquisei, não dá para utilizar os relatórios do Report Viewer (arquivos rdlc) no PHP.. O controle visualizador é da plataforma Microsoft, então, o seu site teria que ser feito em ASP NET.. Uma alternativa que você poderia utilizar é criar um web service (em .NET) que gera o PDF do relatório e retorna o resultado para o seu site PHP..

      Enfim, se você conseguir encontrar alguma alternativa para exibir relatórios do Report Viewer no PHP, volta aqui e avisa a gente nos comentários..

      Abraço!
      André Lima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *