首页 文章

在VB.Net中手动在Reportviewer中加载.rdlc报告

提问于
浏览
4

我需要在reportviewer中提供认真的帮助 .
我看了很多链接,各方面尝试了很多代码,但找不到合适的解决方案 . 请让我理解并清除我的怀疑 .
完全混淆了在代码中选择哪个数据集以及什么是datasource.value每次都给我错误的东西......

我正在展示如何创建报告并尝试使其工作的步骤 . 这是因为我可能在创建报告时犯了任何错误,而人们可能会 grab 它 .

现在问题描述如下,我有很多.rdlc报告我的项目 . 我做的是

注意:包含表单名称的Reportviewer是 Reports.vb
RDLC报告是Reports1.rdlc,Report2.rdlc,......

1)创建报告,如添加 - >新项目 - >报告 - >报告 - > Report1.rdlc
报告名称:Report1.rdlc

2)然后我像这样从这里添加数据集......

enter image description here

3)打开DataSet属性,它甚至打开DataSource配置向导 . 我选择存储过程,因为我想从我的存储过程中获取数据并按下Finish .
这里的DataSet名称是 BonnyDataSet

enter image description here

4)之后,我从数据集属性中选择数据源...
现在这里的可用数据集是什么????
在ReportViewer中加载时我必须考虑哪个数据集?

enter image description here

5)现在我通过添加下面显示的dataset1中的数据列来组织列...

enter image description here

6)现在我以Reports.vb的形式添加了Reportviewer并尝试了很多代码....
在这里展示他们中的一些 .

Private Sub Reports_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            'Select Case PubRepVar
            'Case "AccMast"
            Dim data As New BonnyDataSet
            Dim rds = New ReportDataSource("BonnyDataSet", data)
            ReportViewer.LocalReport.DataSources.Clear()
            ReportViewer.LocalReport.DataSources.Add(rds)   ‘------error here
            ReportViewer.LocalReport.ReportEmbeddedResource = "YourProjectNamespace.Report1.rdlc"
            ReportViewer.RefreshReport()
            'End Select

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

我收到如下错误:

BC30311:“ReportDataSource”类型的值无法转换为“ReportDataSource”

我对这个错误一无所知 .

我尝试的另一个代码是ReportViewer.ProcessingMode = ProcessingMode.Local

Dim localReport As LocalReport
        localReport = ReportViewer.LocalReport ‘-------error here

        localReport.ReportEmbeddedResource =
            "ReportViewerIntro.Report1.rdlc"

        Dim dataset As New DataSet("BonnyDataSet")

这里的错误显示如下:

BC30311:“LocalReport”类型的值无法转换为“LocalReport” .

我尝试了很多其他但却无法理解问题所在 . 我在创建.rdlc报告时做错了什么?

迫切需要帮助 . 感谢名单

1 回答

  • 4

    你应该考虑这些说明:

    • 你有一个组合时错误说:

    BC30311:“ReportDataSource”类型的值无法转换为“ReportDataSource”

    因此,您应该检查是否正在使用 ReportDataSource 的正确引用并使用正确名称空间中的类 . 一个常见问题是当您在Windows窗体项目中添加 Microsoft.Reporting.WebForms.dll 作为引用并添加 Import Microsoft.Reporting.WebForms 命名空间时,您将收到此类异常 .

    • 修复后,您应该注意报告中 DataSet 的名称应与创建新 ReportDataSource 时使用的名称相同 . 例如,如果 DataSet 的名称是 DataSet1 ,则应使用以下代码:
    Dim rds = New ReportDataSource("DataSet1", data)
    
    • 要传递给报表的 data 应与报表使用的结构相同 . 例如,它应该是 DataTable 的实例:
    TableAdapter1.Fill(Me.DataSet1, "Table1")
    Dim rds = New ReportDataSource("DataSet1", Me.DataSet1.Table1)
    
    • 设置正在使用的报告时,请使用正确的资源名称 . 例如,如果项目的根目录中有 Report1 ,项目的默认namspace为 YourProjectNamespace ,则资源名称为:
    ReportViewer.LocalReport.ReportEmbeddedResource = "YourProjectNamespace.Report1.rdlc"
    

    当您的报告位于文件夹中时,文件夹名称也将添加到其资源名称中 .

相关问题