Crystal Report не отображает данные, если одна из двух таблиц данных в наборе данных возвращает пустые строки - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь показать данные из двух таблиц данных с помощью кристаллического отчета, но я столкнулся с проблемой, заключающейся в том, что при наличии данных в двух таблицах отчет работает очень хорошо, но если в какой-либо одной таблице данных нет, данные в другой таблице данных не показывает! Я использую следующий код для заполнения данных и загрузки отчета:

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

следующее изображение показывает, как выглядит набор данных. enter image description here

спасибо, продвинутый

1 Ответ

0 голосов
/ 17 июня 2020

На самом деле, я думаю, что никто не будет пытаться нам здесь помочь в отношении MySql и отчета Crystal, иначе @nbk и мистер nbk не готов иметь дело с новичками, как я видел в этом посте и в предыдущем посте. так или иначе, я нашел решение по следующей ссылке: Решение

удачи

...