Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在crystal report中显示数据而不复制数据?_Vb.net_Crystal Reports_Sap - Fatal编程技术网

Vb.net 如何在crystal report中显示数据而不复制数据?

Vb.net 如何在crystal report中显示数据而不复制数据?,vb.net,crystal-reports,sap,Vb.net,Crystal Reports,Sap,我在使用left join在crystal reports中显示数据时遇到问题,因为即使我在sqlcommand中使用GROUP BY,它也会复制我的数据 以下是我的表格列表: table 1: complaint 以下是我在crystal reports中的代码: Dim objConn As MySqlConnection Dim daT1, daT2 As MySqlDataAdapter Dim activecomp As DataSet Dim s

我在使用left join在crystal reports中显示数据时遇到问题,因为即使我在sqlcommand中使用GROUP BY,它也会复制我的数据

以下是我的表格列表:

table 1: complaint

以下是我在crystal reports中的代码:

    Dim objConn As MySqlConnection
    Dim daT1, daT2 As MySqlDataAdapter
    Dim activecomp As DataSet
    Dim strConnection As String
    Dim strSQL As String

    strConnection = "server=localhost;user id=root;password=;database=ticketing_system;"
    objConn = New MySqlConnection(strConnection)
    objConn.Open()

    strSQL = "SELECT * FROM errordesc LEFT JOIN complaint ON errordesc.tran_no=complaint.tran_no WHERE errordesc.status='On-process' group by errordesc.err_id "
    daT1 = New MySqlDataAdapter(strSQL, objConn)
    activecomp = New DataSet
    daT1.Fill(activecomp, "comp")
    daT1.Fill(activecomp, "active")

    Dim rpt As New CrystalReport1
    rpt.SetDataSource(activecomp)
    CrystalReportViewer1.ReportSource = rpt

    objConn.Close()
我的结论是:


它复制了我的errordesc.err\u我甚至认为我把它分组了(如果有人知道,请帮助。提前感谢…

我认为删除重复行的简单方法是更改您的
strSQL

strSQL = "SELECT DISTINCT * FROM errordesc LEFT JOIN "+
    "complaint ON errordesc.tran_no=complaint.tran_no "+
    "WHERE errordesc.status='On-process' group by errordesc.err_id "

哦,我通过将我的报告编码成如下水晶报告解决了我自己的问题:

Dim objConn As MySqlConnection
    Dim daT1, daT2 As MySqlDataAdapter
    Dim activecomp As DataSet
    Dim strConnection As String
    Dim strSQL As String

    strConnection = "server=localhost;user id=root;password=;database=ticketing_system;"
    objConn = New MySqlConnection(strConnection)
    objConn.Open()


    strSQL = "SELECT * FROM errordesc WHERE errordesc.status='On-process' group by errordesc.err_id "
    daT1 = New MySqlDataAdapter(strSQL, objConn)
    activecomp = New DataSet
    daT1.Fill(activecomp, "errordesc")

    strSQL = "SELECT * FROM complaint left join errordesc on complaint.tran_no=errordesc.tran_no group by complaint.tran_no"
    daT2 = New MySqlDataAdapter(strSQL, objConn)
    daT2.Fill(activecomp, "complaint")

    Dim rpt As New CrystalReport1
    rpt.SetDataSource(activecomp)
    CrystalReportViewer1.ReportSource = rpt

    objConn.Close()

您仍然需要使用加入(投诉、错误描述)要做你想做的事情,就像你之前询问投诉时一样,应该有一个错误描述的外键,该外键在所示的数据库的一小部分中似乎缺失。如图所示,似乎没有关系。我已经使用了join sir,但输出是相同的…所以你说,但你从未向我们显示SQL…他们在哪列加入?你有吗除了左连接,你知道这有什么错吗?我已经使用了左连接,但是输出是一样的。你需要提供每个表的数据样本。此外,为什么不直接针对数据库创建一个报告呢?代码中这样做是不必要的复杂。不工作,先生。输出是一样的。嗯。也许在我的数据集上是问题em或我必须先链接数据集中的两个表,然后才能在mysql中设置命令
Dim objConn As MySqlConnection
    Dim daT1, daT2 As MySqlDataAdapter
    Dim activecomp As DataSet
    Dim strConnection As String
    Dim strSQL As String

    strConnection = "server=localhost;user id=root;password=;database=ticketing_system;"
    objConn = New MySqlConnection(strConnection)
    objConn.Open()


    strSQL = "SELECT * FROM errordesc WHERE errordesc.status='On-process' group by errordesc.err_id "
    daT1 = New MySqlDataAdapter(strSQL, objConn)
    activecomp = New DataSet
    daT1.Fill(activecomp, "errordesc")

    strSQL = "SELECT * FROM complaint left join errordesc on complaint.tran_no=errordesc.tran_no group by complaint.tran_no"
    daT2 = New MySqlDataAdapter(strSQL, objConn)
    daT2.Fill(activecomp, "complaint")

    Dim rpt As New CrystalReport1
    rpt.SetDataSource(activecomp)
    CrystalReportViewer1.ReportSource = rpt

    objConn.Close()