samesdavis Posted February 6, 2013 at 01:10 AM Report #494351 Posted February 6, 2013 at 01:10 AM (edited) 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 February 6, 2013 at 12:09 PM by samesdavis
samesdavis Posted February 6, 2013 at 12:07 PM Author Report #494376 Posted February 6, 2013 at 12:07 PM 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?
samesdavis Posted February 6, 2013 at 01:14 PM Author Report #494385 Posted February 6, 2013 at 01:14 PM 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
jpaulino Posted February 6, 2013 at 01:51 PM Report #494389 Posted February 6, 2013 at 01:51 PM Não sei porque usas o redim, porque tens de indicar os parametros que tens já definidos no relatório. Mas aqui tens mais um exemplo: http://www.jorgepaulino.com/2009/06/vbnet-microsoft-reporting-services.html
samesdavis Posted February 6, 2013 at 02:19 PM Author Report #494392 Posted February 6, 2013 at 02:19 PM 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
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now