none
Como popular um reportviewer via código em VB.Net? RRS feed

  • Pergunta

  • Olá, minha dúvida é a seguinte: como posso popular o componente ReportViewer via código em VB.Net?

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    domingo, 17 de novembro de 2013 20:59

Respostas

  • Existem algumas maneiras depende do que você deseja, por exemplo pode passar um Dataset para o report ou criar parametros depende do que deseja popular veja este ex :

    Report Viewer VB

    • Marcado como Resposta Marcio_Nogueira domingo, 17 de novembro de 2013 21:11
    domingo, 17 de novembro de 2013 21:03
  • Alterei algumas coisas aqui no seu codigo repare que no item Report.rdlc eu criei um Dataset chamado DataSet1 olha na hora de add o datasource, eu coloco primeiro o nome do dataset pra qual vai enviar os dados e depois a tabela que sera carregado os dados note que usei sql server mas desde que sua consulta traga dados não tem problema o bd usado. Na pagina aspx coloquei o codigo no page load e um if verificando se é postback pq senão ele entra em "loop infinito" e não carrega o relatorio na pagina aspx adicionei um scriptmanager para rodar o relatorio e o item report que le qual relatorio deseja rodar olhe o exemplo em aspx e code behind.

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Report_VB.aspx.vb" Inherits="WebApplication1_ReportVB.Report_VB" %>
    
    <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <rsweb:ReportViewer ID="reportVB" runat="server" Font-Names="Verdana" 
                Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
                WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
                <LocalReport ReportPath="Report1.rdlc">
                    <DataSources>
                        <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
                    </DataSources>
                </LocalReport>
            </rsweb:ReportViewer>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
                SelectMethod="GetData" 
                TypeName="WebApplication1_ReportVB.PM17140DataSetTableAdapters.tblGroupTableAdapter">
            </asp:ObjectDataSource>
        </div>
        </form>
    </body>
    </html>
    

    Imports System.Data
    Imports System.Data.Sql
    Imports System.Data.SqlClient
    
    
    Public Class Report_VB
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            If Not IsPostBack Then
    
                Dim strConexao, strSql As String
                strConexao = "Data Source=DANIEL-PC\SQLEXPRESS;Initial Catalog=PM17140;Integrated Security=True;"
                strSql = "select * from tblGroup"
    
                Dim conn As SqlConnection
                conn = New SqlConnection(strConexao)
    
                Dim daCursos As SqlDataAdapter
                daCursos = New SqlDataAdapter(strSql, conn)
    
                Dim dsCursos As DataSet
                dsCursos = New DataSet
                Try
                    conn.Open()
                    daCursos.Fill(dsCursos, "tblGroup")
    
                Finally
                    conn.Close()
                End Try
    
                Dim rpt As New Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", dsCursos.Tables("tblGroup"))
    
    
                reportVB.LocalReport.DataSources.Clear()
                reportVB.LocalReport.DataSources.Add(rpt)
    
            End If
    
    
    
        End Sub
    
    End Class

    • Marcado como Resposta Marcio_Nogueira domingo, 17 de novembro de 2013 22:18
    domingo, 17 de novembro de 2013 22:05

Todas as Respostas

  • Existem algumas maneiras depende do que você deseja, por exemplo pode passar um Dataset para o report ou criar parametros depende do que deseja popular veja este ex :

    Report Viewer VB

    • Marcado como Resposta Marcio_Nogueira domingo, 17 de novembro de 2013 21:11
    domingo, 17 de novembro de 2013 21:03
  • Populo o DataSet com o DataAdapter, em seguida in formo o DataSet como sendo a fonte de dados, porém, nada é exibido no ReportViewer.

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    domingo, 17 de novembro de 2013 21:11
  • Mostre o bloco de código que você popula o DataSet
    domingo, 17 de novembro de 2013 21:14
  • Dim strConexao, strSql As String
            strConexao = "Server=localhost;Port=5432;User Id=postgres;Password=Gx12J@;Database=website;"
            strSql = "select curso,descricao,publico_alvo from cursos"

            Dim conn As NpgsqlConnection
            conn = New NpgsqlConnection(strConexao)

            Dim daCursos As NpgsqlDataAdapter
            daCursos = New NpgsqlDataAdapter(strSql, conn)

            Dim dsCursos As DataSet
            dsCursos = New DataSet

            Dim rpt As New ReportDataSource("dsCursos", dsCursos.Tables("cursos"))

            Try
                conn.Open()
                daCursos.Fill(dsCursos, "cursos")
                Me.rptCursos.LocalReport.DataSources.Add(rpt)
            Finally
                conn.Close()
            End Try


    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    domingo, 17 de novembro de 2013 21:31
  • Alterei algumas coisas aqui no seu codigo repare que no item Report.rdlc eu criei um Dataset chamado DataSet1 olha na hora de add o datasource, eu coloco primeiro o nome do dataset pra qual vai enviar os dados e depois a tabela que sera carregado os dados note que usei sql server mas desde que sua consulta traga dados não tem problema o bd usado. Na pagina aspx coloquei o codigo no page load e um if verificando se é postback pq senão ele entra em "loop infinito" e não carrega o relatorio na pagina aspx adicionei um scriptmanager para rodar o relatorio e o item report que le qual relatorio deseja rodar olhe o exemplo em aspx e code behind.

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Report_VB.aspx.vb" Inherits="WebApplication1_ReportVB.Report_VB" %>
    
    <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <rsweb:ReportViewer ID="reportVB" runat="server" Font-Names="Verdana" 
                Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
                WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
                <LocalReport ReportPath="Report1.rdlc">
                    <DataSources>
                        <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
                    </DataSources>
                </LocalReport>
            </rsweb:ReportViewer>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
                SelectMethod="GetData" 
                TypeName="WebApplication1_ReportVB.PM17140DataSetTableAdapters.tblGroupTableAdapter">
            </asp:ObjectDataSource>
        </div>
        </form>
    </body>
    </html>
    

    Imports System.Data
    Imports System.Data.Sql
    Imports System.Data.SqlClient
    
    
    Public Class Report_VB
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            If Not IsPostBack Then
    
                Dim strConexao, strSql As String
                strConexao = "Data Source=DANIEL-PC\SQLEXPRESS;Initial Catalog=PM17140;Integrated Security=True;"
                strSql = "select * from tblGroup"
    
                Dim conn As SqlConnection
                conn = New SqlConnection(strConexao)
    
                Dim daCursos As SqlDataAdapter
                daCursos = New SqlDataAdapter(strSql, conn)
    
                Dim dsCursos As DataSet
                dsCursos = New DataSet
                Try
                    conn.Open()
                    daCursos.Fill(dsCursos, "tblGroup")
    
                Finally
                    conn.Close()
                End Try
    
                Dim rpt As New Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", dsCursos.Tables("tblGroup"))
    
    
                reportVB.LocalReport.DataSources.Clear()
                reportVB.LocalReport.DataSources.Add(rpt)
    
            End If
    
    
    
        End Sub
    
    End Class

    • Marcado como Resposta Marcio_Nogueira domingo, 17 de novembro de 2013 22:18
    domingo, 17 de novembro de 2013 22:05
  • Obrigado pela ajuda, valeu mesmo!!!!!!!!!!!!

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    domingo, 17 de novembro de 2013 22:18