2013-12-20 61 views
0

我試着用vb.net中的mysql在我的水晶報表上創建一個左連接。但似乎我沒有輸出在我的reports.does任何人都知道如何使用左連接在水晶報告在VB.NET?請幫忙。感謝你們!如何在crystal報表中加入mysql?

HERE IS MY CODE SIR.. 

Imports CrystalDecisions.CrystalReports.Engine 
Imports MySql.Data.MySqlClient 
Imports CrystalDecisions.Shared 
Public Class historyrep 
Dim da As New MySqlDataAdapter 
Dim ds As DataSet 
Dim p(7) As MySqlParameter 
Private Sub historyrep_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim ds As New DataSet 
    Dim sql As String 


    sql = "SELECT complaint.*,solution.* FROM complaint LEFT JOIN solution ON complaint.tran_no=solution.tran_no WHERE complaint.status='finished'" 
    Dim dscmd As New MySqlDataAdapter(sql, connectionsrvr) 

    dscmd.Fill(ds, "complaint") 
    connectionsrvr.Close() 

    Dim objret As New CrystalReport1 
    objret.setdatasource(ds.Tables(0)) 

    CrystalReportViewer1.ReportSource = objret 
    CrystalReportViewer1.Refresh() 
End Sub 
End Class 
+0

也許還有在'complaint'其中'complaint.status ='finished''沒有行。 –

+0

有投訴先生行。特別是身份。 –

+0

讓我感到震驚的第一件事就是你從每個表格中獲取所有字段。兩個表中的字段是否有相同的名稱?接下來,你給你的表一個特定的名字,但是然後通過索引引用一個表。您的查詢似乎返回一個結果表,因此通過零索引引用應該沒問題,但是當您按照您提供的名稱引用時會發生什麼?您是否有某種分析器來告訴您該命令是否在數據庫服務器上正確執行? – Zec

回答

0

顯然你的語法是正確的,所以我會嘗試一個Left Outer Join,它適用於某些數據庫。另外,爲了排除故障,請保留Where子句以確保您獲得每個可能的記錄。 在這些語法正確的情況下,您必須從最廣泛的SELECT語句開始,然後開始細化,直到找到問題。 我注意到的另一件事是,你永遠不會打開​​。

+0

好吧,先生病嘗試調用表上的每個列。 –

+0

我打開connectionrvr到我稱爲先生的模塊 –

0
  1. 嘗試在MySQL工作臺查詢自己或類似

    SELECT complaint.*, 
         solution.* 
    FROM complaint 
        LEFT JOIN solution 
           ON complaint.tran_no = solution.tran_no 
    WHERE complaint.status = 'finished' 
    
  2. 如果與預期的結果集成功,您可以訪問Crystal Reports設計,嘗試相同的查詢命令桌子那裏。

  3. 如果使用預期的結果集成功,那麼問題在VB代碼或API集成中的某處。檢查所有事件日誌以查找錯誤消息。

0

只需使用ODBC連接與SQL自定義查詢,並在Crystal Reports中創建一個不帶數據集的命令。我使用的MySQL驅動程序ODBC 6.8,CR 13和.NET 4.5

Select `table2`.* ,`table1`.* from 
FROM `table1` 
join `table2` on 
`table1`.`Cod_P` = `table2`.`Cod_Prop` 
where 1=1 

Source Mysql.org

+0

爲什麼你使用兩個「FROM」?爲什麼'WHERE 1 = 1'?刪除它或使用'WHERE 1'。先生, –

+0

就是一個例子。 – jjzd2w