2010-07-27 129 views
0

我在這裏有一個奇怪的情況,我希望有人能幫助我。使用無類型數據集時,我沒有同樣的問題。用UNION ALL填充輸入數據集ALL SQL查詢

好的。我有一個類型化的數據集MyDS和一個類型化的數據表MyTable(TableID,Title,Message)。

表被充滿了來自兩個表的結果,使用UNION ALL


Select 
    TableAID, 
    TableATitle, 
    Message 
FROM TableA 

UNION ALL 

Select 
    TableBID, 
    TableBTitle, 
    Message 
FROM TableB 

Dim cmd As SqlCommand = New SqlCommand("SQL", conn) 

Dim da AS SqlDataAdapter = New SqlDataAdapter(cmd) 
da.Fill(MyDS.MyTable) 

查詢運行良好的SQL Server上,但是當我通過代碼,我發現不正確TableAID或TableAID。

TableA有1行,TableB有15行。所以我的數據集返回16行(所以基本上這是一個主 - 細節情況)。除TableAID和TableBID之外,所有列都返回正確的相應數據。

TableAID具有值= 和TableBID具有10,11,12,13,24 .........,但是當我步中,

MyDS.MyTable(i).TableID
保持100在整個16個記錄,而不是100,10,11,12,13 ...... 24。標題,消息數據是正確的。 TableAID和TableBID是我的主鍵。

= 0〜15

請問這是怎麼類型化數據集處理UNION?我不想創建兩個類型化數據表併爲每個數據表創建單獨的SQL並創建一個關係。

+0

是否有任何有條件的邏輯在您使用的步驟通過數據表的代碼?如果是這樣,你可以編輯你的問題的任何機會,包括它? – 2010-07-27 09:15:14

+0

沒有條件邏輯。我用結果填充gridview。沒有什麼花哨。 – Nyiko 2010-07-27 09:29:41

+0

我想我需要查看強類型數據集/數據表背後的代碼。 – knslyr 2010-07-27 13:45:43

回答

0

我設法解決它。根本不是數據集。實際上我使用的是從視圖中選擇的存儲過程,而且我有兩個幾乎相同的視圖(view1和view2)。所以上面的sql來自view2,但存儲過程使用view1。我使用了意見,因爲這個陳述比那個複雜。所以我的moto是,如果我有一個複雜的SELECT sql,我需要在我的存儲過程中使用,把它放在視圖上,並有一個簡單的過程來處理。 代碼是

   
Dim cmd As SqlCommand = New SqlCommand("StoredProcedureName", conn) 
cmd.CommandType = CommandType.StoredProcedure 


Dim cmd As SqlCommand = New SqlCommand("SQL", conn) 

我幾乎想與非類型化的一個來代替我的類型化數據集,因爲我的時間不多了。最後期限。 LOL 謝謝你讓我覺得它不是數據集,因爲你不知道可能是什麼問題。大聲笑