1

我在 vb.net 中有一个 reportviewer,我有 2 个 .rdlc 文件,即 Report1 和 Report2。它们的设计与表格相同,但 Report1 具有参数和过滤器,Report2 仅显示我记录中的所有内容。

我知道如何在设计时将数据源绑定到reportviewer,但我不知道如何在运行时进行,我需要在第一次加载表单以及用户实际搜索某些内容时切换数据源。基本上这就是我的想法。

http://imageshack.us/photo/my-images/407/reportzm.png/

我需要在第一次加载表单时显示所有记录。所以我需要 Report2.rdlc 来处理没有过滤器的内容。

当我绑定 Report1.rdlc 时,这就是我们所看到的

http://imageshack.us/photo/my-images/255/er11.png/

除了我们在文本框中输入一些值并单击搜索之外,什么都没有显示,记录将根据我们正在搜索的内容加载。

这是代码。

Imports Microsoft.Reporting.WinForms

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'houseDataSet.Table1' table. You can move, or remove it, as needed.


        Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As New ReportParameter("ReportParameter1", TextBox1.Text)
        ReportViewer1.LocalReport.SetParameters(New ReportParameter() {a})
        ReportViewer1.RefreshReport()
    End Sub
End Class
4

2 回答 2

2

用过滤后的数据填充您的数据表。然后绑定它。

Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)

类似于:

Table1 = FilteredQueryAsDataTable

Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)
于 2012-12-04T11:56:07.947 回答
0

此代码可能对您有所帮助:)(vb.net 2008 代码)我在按钮中使用此代码。所以当我按下它时;水晶报表将显示在水晶报表查看器上,并显示数据集中的数据。

    Dim rpt As New CrystalReport1() 'The report you created. 
    Dim myConnection As SqlConnection
    Dim MyCommand As New SqlCommand()
    Dim myDA As New SqlDataAdapter()
    Dim myDS As New Database1DataSet1() 'The DataSet you created. 
    Try
        myConnection = New SqlConnection("type here your connection string")
        MyCommand.Connection = myConnection
        MyCommand.CommandText = "Select  * from table"
        MyCommand.CommandType = CommandType.Text
        myDA.SelectCommand = MyCommand
        myDA.Fill(myDS, "type here table name")
        rpt.SetDataSource(myDS)
        rptViewer.ReportSource = rpt
    Catch Excep As Exception
        MessageBox.Show(Excep.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
于 2013-02-05T10:55:07.517 回答