VB .NET - Criando um relatório com gráfico usando o ReportViewer


 Neste artigo eu vou mostrar como criar um relatório usando o ReportViewer em uma aplicação Windows Forms usando a linguagem Visual Basic e o VS 2013 Comunity Edition.


O ReportViewer não está disponível com VS 2013,  mas ele está disponível como um download gratuito. O ReportViewer é na verdade um componente do SQL Express.

 

Para gerar relatórios com o ReportViewer temos que instalar o Report Builder e o ReportViewer RunTime.

 

O SQL Express (LocalDB) não inclui o Report Builder mas você pode baixá-lo aqui : http://www.microsoft.com/en-us/downl....aspx?id=35576

 

Após isso você precisa instalar o ReportViewer RunTime que pode ser obtido aqui :  http://www.microsoft.com/en-us/downl....aspx?id=35747

 

Não existe uma versão dedicada ao VS 2013 mas essas versões funcionam com o VS 2012 e VS 2013.

 

A versão Community do Visual Studio 2013 é disponibilizada como um download gratuito sendo equivalente à versão Professional em termos de recursos.

Recursos usados:

Criando o projeto no Visual Studio Community 2013

Abra o VS 2013 Community 2013 e clique em New Project;

Selecione a linguagem Visual Basic ou Visual C# e o template ASP .NET Web Application;

Informe o nome UsandoReportViewer ou outro de sua preferência e clique no botão OK;

Vamos agora criar duas classes em nosso projeto que permitirão definir o nosso domínio e o nosso repositório.

No menu PROJECT clique em Add Class e informe o nome Estudante.vb e a seguir inclua o seguinte código nesta classe:

Public Class Estudante
    Public Property EstudanteID() As Integer
    Public Property Nome() As String
    Public Property Nascimento() As DateTime
    Public Property Endereco() As String
    Public Property Notas() As Integer
End Class

 

A classe Estudante representa o nosso domínio. Vamos agora definir uma classe que irá permitir atribuir valores à nossa classe de forma a termos dados para montar o relatório.

No menu PROJECT clique em Add Class e informe o nome EstudanteRepositorio.vb e a seguir inclua o seguinte código nesta classe:

Public Class EstudanteRepositorio
    Public Shared Function GetEstudantes() As List(Of Estudante)
        Dim Lista As New List(Of Estudante)() From { _
            New Estudante() With { _
                 .EstudanteID = 1, _
                 .Nome = "Macoratti", _
                 .Endereco = "Rua Peru, 100", _
                 .Notas = 90, _
                 .Nascimento = Convert.ToDateTime("11-08-1985") _
            }, _
            New Estudante() With { _
                 .EstudanteID = 2, _
                 .Nome = "Jefferson", _
                 .Endereco = "Av. Mexico 908", _
                 .Notas = 85, _
                 .Nascimento = Convert.ToDateTime("21-11-1991") _
            }, _
            New Estudante() With { _
                 .EstudanteID = 3, _
                 .Nome = "Janice", _
                 .Endereco = "Pça XV Novembro, 12", _
                 .Notas = 80, _
                 .Nascimento = Convert.ToDateTime("15-08-1994") _
            }, _
            New Estudante() With { _
                 .EstudanteID = 4, _
                 .Nome = "Jessica", _
                 .Endereco = "Rua Primavera ,520", _
                 .Notas = 75, _
                 .Nascimento = Convert.ToDateTime("10-02-1989") _
            }, _
            New Estudante() With { _
                 .EstudanteID = 5, _
                 .Nome = "Marcia", _
                 .Endereco = "Av. Equador , 19", _
                 .Notas = 70, _
                 .Nascimento = Convert.ToDateTime("3-03-1988") _
            } _
        }
        Return Lista
    End Function
End Class

Agora vamos incluir um controle ReportViewer no formulário form1.vb.

A partir da ToolBox abra a guia Reporting e arraste e solte o componente ReportViewer no formulário alterando o seu nome para rptv1 :

Agora que temos as classes vamos gerar o nosso relatório para isso vamos incluir um Report em nosso projeto.

No menu PROJECT clique em Add -> New Item e a seguir selecione a guia Reporting e clique no item Report arrastando-o para o formulário:

Informe o nome do relatório como sendo : RelatorioEstudantes.rdlc

Clique com o botão direito sobre o item DataSet e a seguir em Add DataSet;

Em Data Source clique no botão New;

No assistente clique em Object:

Selecione a classe Estudante e clique no botão Finish:

   

A seguir selecione Usando_ReportViewer e selecione o dataset Estudante:

Clique com  o botão direito sobre o descritor do ReportViewer e a seguir clique e Insert Table;

A seguir arraste e solte os campos do DataSet EstudanteDS em cada coluna da tabela :

Clique com o botão direito novamente no descritor e a seguir em Insert -> Page Header. Isso criará um Header no topo do relatório.

Clique com botão direito sobre a área do Header e a seguir clique em Insert -> TextBox;

Digite no interior do TextBox o título do relatório :  Relatório de Estudantes com Gráfico de Notas

Agora clique com o botão direito novamente no descrito logo abaixo da tabela do relatório e a seguir clique em Insert -> Chart;

A seguir selecione o tipo de gráfico como sendo um Column conforme a figura a seguir:

   

Agora a arraste o campo Nota para  Values e o campo Nome para Category Groups e defina o título do gráfico como Gráfico Notas e o título do eixo X como Estudantes e do eixo Y como Notas:

Salve o relatório.

Agora para concluir inclua o código abaixo no evento Load do formulário form1.vb onde temos o ReportViewer que irá exibir o relatório:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'pegar a lista de estudantes
        Dim lista As List(Of Estudante) = EstudanteRepositorio.GetEstudantes()
        rptv1.LocalReport.DataSources.Clear()
        rptv1.LocalReport.ReportEmbeddedResource = "ReportViewer_Grafico_Relatorio_1.RelatorioEstudantes.rdlc"
        Dim ds As New Microsoft.Reporting.WinForms.ReportDataSource("EstudanteDS", lista)
        rptv1.LocalReport.DataSources.Add(ds)
        ds.Value = lista
        rptv1.LocalReport.Refresh()
        Me.rptv1.RefreshReport()
    End Sub
End Class

Executando o projeto iremos obter o seguinte resultado:

Pegue o projeto completo aqui:  ReportViewer_Grafico_Relatorio_1.zip

Veja a vídeo aula deste artigo em : ReportViewer - Gerando relatório com gráfico a partir de objetos

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Disse-lhes, pois, Jesus: Quando levantardes o Filho do homem, então conhecereis que EU SOU, e que nada faço por mim mesmo; mas isto falo como meu Pai me ensinou.
E aquele que me enviou está comigo. O Pai não me tem deixado só, porque eu faço sempre o que lhe agrada.

João 8:28-29
 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti