首页 > 解决方案 > 当数据集中 2 个数据表中的 1 个返回空行时,Crystal Report 不显示数据

问题描述

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

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

下一张图片讲述了数据集是如何出现的。 在此处输入图像描述

谢谢,进阶

标签: mysqlvb.netcrystal-reports

解决方案


实际上,我认为没有人会在这里尝试帮助我们解决 MySql 和 Crystal 报告,否则 @nbk 和 nbk 先生还没有准备好与初学者打交道,正如我通过这篇文章和上一篇文章所看到的那样。无论如何,我在下一个链接中找到了解决方案: 解决方案

祝你好运


推荐阅读