2014-01-27 58 views
0

我在使用左连接显示水晶报表中的数据时遇到问题,因为即使我在sqlcommand中使用GROUP BY,它也复制了我的数据。如何在不重复数据的情况下在水晶报表中显示数据?

,这里是我的表的列表:

table 1: complaint 

enter image description here

table 2: errordesc (error description) 

enter image description here

这是我在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() 

和我的外卖是这样的: output

它重复我的errordesc.err_id甚至认为我分组它。 :(请帮助,如果任何人都知道在此先感谢...

+1

你仍然需要使用JOIN对(投诉,errordesc)做你想要什么正如前面,当你问http://stackoverflow.com/q/21247358/1070452应该投诉有一个外键来显示错误描述,这些显示从一点点缺失的DB显示。如图所示,似乎没有关系 – Plutonix

+0

我已经使用连接先生,但输出是相同的 –

+1

...所以你说,但你从来没有向我们展示SQL ...他们加入了什么列? – Plutonix

回答

0

oohh我解决我自己的问题。我对这样的水晶报表:

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() 
1

我认为简单的方法来移除重复的行是改变你的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 " 
+0

dont work sir。输出是相同的。我的数据集是问题,或者我必须链接我的数据集中的两个表,然后在MySQL中设置命令 –

相关问题