none
VB2008 ReportViewer问题求助 RRS feed

  • 问题

  • 设计环境:WIN XP SP2 + VISUAL BASIC 2008

    解决方案中将参数传递至报表时出现问题:

    代码如下:

            Dim sCanShu As New Microsoft.Reporting.WinForms.ReportParameter("StrDanWei", "QQJIA")
            ReportViewer1.LocalReport.SetParameters(sCanShu)
    错误提示:"无法将类型为“Microsoft.Reporting.WinForms.ReportParameter”的对象强制转换为类型“System.Collections.Generic.IEnumerable`1[Microsoft.Reporting.WinForms.ReportParameter]”。"

    此次我已经在Report1.rdlc的设计器中设定了参数"StrDanWei",类型为String

     

    请高人帮帮我!

     

     

    2008年7月20日 3:09

答案

  • feiyun0112版主,您好

    对您的耐心回复深表感谢,同时也对我没有认真分析代码出错原因向您表示歉意!

    在您指导下更改后的代码本来没有问题的,运行时却出错的原因还是在于我自已.出错原因很简单:

     

    我没有将报表复制到发布目录,以至于参数传到原先制作的报表,而正如你所说的,原先的报表里我并没有创建参数!

     

    不过微软不应当仅提示"本地报表处理期间出错",要是提示"该报表中没有您要传递的参数"的话,偶要省许多事喽.但愿以后会更改提示.呵呵

     

    再次表示对您的谢意和歉意.祝你生活愉快!

    2008年7月21日 5:01

全部回复

  • Dim paramList As New Generic.List(Of ReportParameter)

       paramList.Add(sCanShu)
     
    ReportViewer1.LocalReport.SetParameters(paramList)

    2008年7月20日 3:23
    版主
  • 版主阁下,下午好

    参照您的提示,没有出现顶楼的错误提示,但是出现了新的错误提示:“本地报表处理期间出错。”——未处理LocalProcessingException

    以下是我的过程全部代码,请与修正指教:

     

     Public Sub PrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreview.Click
            Dim OleOata As New OleDb.OleDbDataAdapter("SELECT * FROM 员工信息 where 员工编号='" & 员工编号TextBox.Text & "'", OleConn)
            Dim datasett As New DataSet
            Dim ViewReport As New FrmPriview '打印预览窗体

            Me.Cursor = Cursors.WaitCursor
            OleConn.Open()
            OleOata.Fill(datasett)
            Dim rds = New ReportDataSource("xswsDataSet_员工信息", datasett.Tables(0))
            Dim sCanSu As ReportParameter 
            Dim paramList As New Generic.List(Of ReportParameter)'''''''这一句是您的代码
                   sCanSu = New ReportParameter("StrDanWei", "注册公司", True)
                   paramList.Add(sCanSu)'这一句是您的代码
                   Application.DoEvents()
            With ViewReport
                .Validate()
                .ReportViewer1.LocalReport.DataSources.Clear()
                .ReportViewer1.LocalReport.DataSources.Add(rds)
                .ReportViewer1.LocalReport.ReportPath = StrPath() + "Report\Report1.rdlc"

                .ReportViewer1.LocalReport.SetParameters(paramList)''''''''问题出现在这一句,设计时没问题,运行时出错.这一句注释掉报表正常显示,但参数仍未能传递过来。出错提示上面已经写了
                .ReportViewer1.LocalReport.Refresh()
                .ShowDialog()
            End With
            OleConn.Close()
            Me.Cursor = Cursors.Default

        End Sub

    2008年7月20日 6:54
  • 详细的错误信息

    2008年7月20日 13:17
    版主
  •  

    With ViewReport
                .Validate()
                .ReportViewer1.LocalReport.DataSources.Clear()
                .ReportViewer1.LocalReport.DataSources.Add(rds)
                .ReportViewer1.LocalReport.ReportPath = StrPath() + "Report\Report1.rdlc"

                .ReportViewer1.LocalReport.SetParameters(paramList)''''''''问题出现在这一句,错误提示:“本地报表处理期间出错。”出错提示对话框标题:“未处理LocalProcessingException”。设计时没问题,运行时出错!这一句注释掉报表正常显示,但参数仍未能传递过来。
                .ReportViewer1.LocalReport.Refresh()
                .ShowDialog()
            End With

    2008年7月21日 3:25
  • 可能是参数StrDanWei不存在report里,你确定名字写对了没

    2008年7月21日 4:10
    版主
  •  

    我确信StrDanWei参数名称没有写错,而且确信我在"Report1.rdlc"中创建了该参数.而且,在该报表中主体部分有一文本框控件显示该参数值:=Parameters!StrDanWei.Value

    请版主一定帮我弄一弄,难不成要放弃.NET的自带报表?

    2008年7月21日 4:17
  • feiyun0112版主,您好

    对您的耐心回复深表感谢,同时也对我没有认真分析代码出错原因向您表示歉意!

    在您指导下更改后的代码本来没有问题的,运行时却出错的原因还是在于我自已.出错原因很简单:

     

    我没有将报表复制到发布目录,以至于参数传到原先制作的报表,而正如你所说的,原先的报表里我并没有创建参数!

     

    不过微软不应当仅提示"本地报表处理期间出错",要是提示"该报表中没有您要传递的参数"的话,偶要省许多事喽.但愿以后会更改提示.呵呵

     

    再次表示对您的谢意和歉意.祝你生活愉快!

    2008年7月21日 5:01