Jump to content
samesdavis

[Resolvido] Parâmetros no ReportViewer ( VS2010 )

Recommended Posts

samesdavis

Já fazia tempo que eu estava querendo me libertar do Crystal Reports, porque o usuário tem que instalá-lo para que os relatórios funcionem.

E além disso ele é muito pesado e os relatórios que faço são simples.

Já o ReportViewer, utiliza a framework...só que esbarrei em um detalhe, só consegui fazer funcionar a partir da 3.0, porque na 2.0 não funcionou NO vs2010

Aproveitando o tópico, segueto o link de um exemplo muito bom que carrega automaticamente o rdlc

http://www.sourcecodester.com/visual-basic-net/load-rdlc-report-using-report-viewer-programmatically.html

Edited by samesdavis

Share this post


Link to post
Share on other sites
samesdavis

Olá pessoal,

aproveitando o tópico, utilizei o exemplo do link acima, mas encontrei APENAS uma dificuldade.

Não sei como passar parâmetros usando esse método, segue abaixo o código que estou usando:


Imports Microsoft.Reporting.WinForms

Public Class frmReport
   Public Property strReport As String

   Private Function GetReport(ByVal reportName As String) As IO.Stream

       ' Recolhe a informação da Assembly 
       Dim currentAssembly As Reflection.Assembly = _
                   Reflection.Assembly.GetExecutingAssembly()

       ' Irá guarda o caminho + nome do ficheiro 
       Dim resource As String = String.Empty

       ' Verifica nos Resources se encontra o relatório pretendido 
       Dim arrResources As String() = _
                   currentAssembly.GetManifestResourceNames()

       For Each resource In arrResources
           If resource.Contains(reportName) Then Exit For
       Next

       ' Coloca o relatório embebido na Stream 
       Dim resourceStream As IO.Stream = _
           currentAssembly.GetManifestResourceStream(resource)

       Return resourceStream

   End Function

   Private Sub frmReport_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       Dim rptDataSource As ReportDataSource = Nothing

       Try
           With Me.ReportViewer1.LocalReport
               Dim rptStream As IO.Stream = GetReport(strReport & ".rdlc")
               .LoadReportDefinition(rptStream)
               .DataSources.Clear()
           End With

           Select strReport
               Case "rptFarmacia"
                   Dim ds As New DHO.FarmaciaDataSet
                   Dim da As New DHO.FarmaciaDataSetTableAdapters.FarmaciaDatasetTableAdapter

                   da.Fill(ds._FarmaciaDataset)

                   ' Use the same name as defined in the report Data Source Definition
                   rptDataSource = New ReportDataSource("Farmacia", ds.Tables("FarmaciaDataset"))
           End Select

           Me.ReportViewer1.LocalReport.DataSources.Add(rptDataSource)

           Dim params(3) As Microsoft.Reporting.WebForms.ReportParameter

           Select Case strReport
               Case "rptFarmacia"
                   ReDim params(1)
                   params(0) = New Microsoft.Reporting.WebForms.ReportParameter("DtInicio", Frm_ComprasFarmacia.txtDT1.Value, True)
                   params(1) = New Microsoft.Reporting.WebForms.ReportParameter("DtFim", Frm_ComprasFarmacia.txtDT2.Value, True)

           End Select

           Me.ReportViewer1.LocalReport.SetParameters(params)
           Me.ReportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)

       Catch ex As Exception
           MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try
   End Sub
End Class

A minha ideia é ter apenas um form para carregar todos os relatórios, por isso estou utilizando o select com Redim para os parâmetros.

Só que está dando erro nessa linha


Me.ReportViewer1.LocalReport.SetParameters(params)

Alguém pode me ajudar?

Share this post


Link to post
Share on other sites
samesdavis

Resolvido, não passei parametro, apliquei o filtro no dataset e enviei para o datasource do report

           Select strReport
               Case "rptFarmacia"
                   Dim ds As New DHO.FarmaciaDataSet
                   Dim da As New DHO.FarmaciaDataSetTableAdapters.FarmaciaDatasetTableAdapter
                   RsDataSet = Banco.RetornarDataSet(strfiltro)
                   da.Fill(ds._FarmaciaDataset)
                   rptDataSource = New ReportDataSource("Farmacia", RsDataSet.Tables(0))
           End Select

Share this post


Link to post
Share on other sites
samesdavis

Mas não foi preciso usar parametros, inclusive até modifiquei mais o código:



RsDataSet = Banco.RetornarDataSet(strfiltro)

Select strReport
      Case "rptFarmacia"
      da.Fill(ds._FarmaciaDataset)
      rptDataSource = New ReportDataSource("Farmacia", RsDataSet.Tables(0))
End Select

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.