Ir para o conteúdo
samesdavis

[Resolvido] Parâmetros no ReportViewer ( VS2010 )

Mensagens Recomendadas

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

Editado por samesdavis

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.