VB.NET后台工作程序不';t执行crystal报表查看器报表源

VB.NET后台工作程序不';t执行crystal报表查看器报表源,vb.net,crystal-reports,Vb.net,Crystal Reports,我的问题是vb.net中的后台工作程序不允许执行一行代码 代码如下: Private _worker As BackgroundWorker Public Sub startload(ByVal e As System.EventArgs) _worker = New BackgroundWorker() AddHandler _worker.DoWork, AddressOf WorkerDoWork AddHandler _worker.RunWorkerCom

我的问题是vb.net中的后台工作程序不允许执行一行代码 代码如下:

  Private _worker As BackgroundWorker

Public Sub startload(ByVal e As System.EventArgs)
    _worker = New BackgroundWorker()
    AddHandler _worker.DoWork, AddressOf WorkerDoWork
    AddHandler _worker.RunWorkerCompleted, AddressOf WorkerCompleted

    _worker.RunWorkerAsync()
End Sub

Public Sub WorkerDoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
    objRpt = New CRBooks
    con.ConnectionString = ConnStr.Connstring
    Dim query As String = CreateSelectQueryAndParameters()
    'if there is no item select, then exit from the method.
    If Not query.Contains("Column") Then
        MessageBox.Show("No selection to display!")
        Return
    End If
    Try
        Dim adapter As MySqlDataAdapter = New MySqlDataAdapter(query, con)
        Dim Ds As Books = New Books
        adapter.Fill(Ds, "Books")
        objRpt.SetDataSource(Ds)
        MsgBox(Ds.Tables(0).Rows(0).Item(0))
        frmReports.CrystalReportViewer1.ReportSource = objRpt
    Catch oleEx As MySqlException
        MessageBox.Show(oleEx.Message)
    Catch Ex As Exception
        MessageBox.Show(Ex.Message)
    End Try
End Sub


Private Sub WorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
    Me.Close()
End Sub

frmReports.CrystalReportViewer1.ReportSource=objRpt行不执行,但当我尝试断点时,编译器运行该行但不执行。

不幸的是,您为crystal report viewer指定了报告源,但要查看该报表查看器,您应该调用包含报表查看器的相应表单的show方法来查看该报表

使用此代码。

Public Sub WorkerDoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
    objRpt = New CRBooks
    con.ConnectionString = ConnStr.Connstring
    Dim query As String = CreateSelectQueryAndParameters()
    'if there is no item select, then exit from the method.
    If Not query.Contains("Column") Then
        MessageBox.Show("No selection to display!")
        Return
    End If
    Try
        Dim adapter As MySqlDataAdapter = New MySqlDataAdapter(query, con)
        Dim Ds As Books = New Books
        adapter.Fill(Ds, "Books")
        objRpt.SetDataSource(Ds)
        MsgBox(Ds.Tables(0).Rows(0).Item(0))
        frmReports.CrystalReportViewer1.ReportSource = objRpt
        frmReports.CrystalReportViewer1.Refreshreport()
        frmReports.show()
    Catch oleEx As MySqlException
        MessageBox.Show(oleEx.Message)
    Catch Ex As Exception
        MessageBox.Show(Ex.Message)
    End Try
End Sub

此处
frmReports.show
显示包含reportviewer的表单。

您实际想要实现的内容。是否要查看该报表?是。但它不会执行。Frmreports已打开。但我也尝试了,但出现了运行时错误。k您能删除或注释msgbox并尝试执行吗?并在指定报告源后尝试添加
frmReports.CrystalReportViewer1.Refreshreport()
。编辑了我的答案,包括该答案。弹出的错误刷新被禁用。(RCIWINFORMVIEWR00000005)请尝试frmReports.CrystalReportViewer1.Update()…如果出现错误,请通知我。