1

vb.net に reportviewer があり、Report1 と Report2 という 2 つの .rdlc ファイルがあります。どちらもテーブルと同じデザインですが、Report1 にはパラメーターとフィルターがあり、Report2 は私のレコードのすべてを表示するだけです。

設計時にレポートビューアーにデータソースをバインドする方法は知っていますが、実行時にそれを行う方法がわかりません。フォームが初めてロードされたとき、およびユーザーが実際に何かを検索したときに、データソースを切り替える必要があります。基本的にこれは私が考えていることです。

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 に答える