Crystal 当数据集 return 中的 2 个数据表中的 1 个为空行时,报表不显示数据

Crystal Report does not show data when 1 of the 2 datatables in dataset return empty rows

我试图通过 crystal 报告显示来自两个数据 table 的数据,但我遇到了一个问题,即当两个 table 中有数据时,报告正在运行很好,但是如果任何一个 table 中没有数据,另一个数据 table 中的数据将不会显示! 我正在使用下一个代码来填充数据并加载报告:

Public Class FR_Parents_Rep2

Dim xCLS As New ClsMain
Dim xDadp As MySqlDataAdapter
Dim xDS As Ds_Edsa


Private Sub btnView_Click(sender As Object, e As EventArgs) Handles btnView.Click
    Try
        If xCLS.MyCodes_CboNotNull_Index(Me.CboParents, "TheParent") = True Then Exit Sub

        Dim xParentID As Integer = Convert.ToInt32(Me.CboParents.SelectedValue)
        Dim xFatoraID, xFrom, xTo As TextObject
        Dim xreport As New Rpt_Parents_Rep2

        xFatoraID = CType(xreport.ReportDefinition.Sections("Section1").ReportObjects("TxtDate"), TextObject)
        xFrom = CType(xreport.ReportDefinition.Sections("Section1").ReportObjects("TxtFrom"), TextObject)
        xTo = CType(xreport.ReportDefinition.Sections("Section1").ReportObjects("TxtTo"), TextObject)

        xDS = New Ds_Edsa

        Dim xSql2 As String
        xSql2 = "SELECT 
            Sum(tbl_parents_payments.TheAmount) AS PrevMadf 
            FROM tbl_parents_payments
            WHERE (((tbl_parents_payments.ParentID)=@ParentID) 
            AND ((tbl_parents_payments.TheDate)<@Date1));"

        Dim xCMD2 As New MySqlCommand(xSql2, Conn)
        xCMD2.Parameters.Add("@Date1", MySqlDbType.Date).Value = CDate(Me.TxtFrom.Value)
        xCMD2.Parameters.Add("@ParentID", MySqlDbType.Int32).Value = xParentID
        xDadp = New MySqlDataAdapter(xCMD2)
        xDadp.Fill(xDS.Tables("PrevData2"))

        '..............................................................................................

        Dim xSql3 As String
        xSql3 = "SELECT tbl_parents_payments.TheDate, 
                        tbl_parents_payments.TheAmount
                        FROM tbl_parents_payments
                WHERE (((tbl_parents_payments.TheDate) 
                Between @Date1 And @Date2) AND 
                ((tbl_parents_payments.ParentID)=@ParentID));"
        Dim xCMD3 As New MySqlCommand(xSql3, Conn)
        xCMD3.Parameters.Add("@Date1", MySqlDbType.Date).Value = CDate(Me.TxtFrom.Value)
        xCMD3.Parameters.Add("@Date2", MySqlDbType.Date).Value = CDate(Me.TxtTo.Value)
        xCMD3.Parameters.Add("@ParentID", MySqlDbType.Int32).Value = xParentID
        xDadp = New MySqlDataAdapter(xCMD3)
        xDadp.Fill(xDS.Tables("ParPay"))
        '..............................................................................................


        xFatoraID.Text = Now.ToString("mmhhAyyyyMMdd")


        xFrom.Text = CStr(Me.TxtFrom.Value.ToString("yyyy/MM/dd"))


        xTo.Text = CStr(Me.TxtTo.Value.ToString("yyyy/MM/dd"))

        '..............................................................................................
        xreport.SetDataSource(xDS)
        Crpt.ReportSource = Nothing
        Crpt.ReportSource = xreport
        Crpt.Refresh()
        xDadp.Dispose()
        xDS.Dispose()

    Catch ex As Exception
        MsgBox(Me_MsgErrorStr + vbNewLine + vbNewLine + ex.Message, Me_MsgInfoStyle, Me_MsgCaptionStr)
    Finally
        Conn.Close()
    End Try
End Sub

下一张图片说明了数据集的显示方式。

谢谢,进阶

实际上,我认为这里没有人会尝试在 MySql 和 Crystal 方面帮助我们 report else @nbk 并且 nbk 先生还没有准备好与初学者打交道,因为我通过这个看到post 和之前的 post。 无论如何,我在下一个 link 找到了解决方案: The Solution

祝你好运