2017-07-26 148 views
0

我在Access中遇到了一個奇怪的行爲。我基本上有兩個預定義的查詢,在我的VBA項目中需要在程序的不同部分工作正常。MS Access SQL - UNION返回空集

現在我需要一個將兩個結果集作爲一個返回的查詢。所以我去解決方案是創建一個新的查詢結合其他兩個查詢。就像:

SELECT * FROM query1 
UNION 
SELECT * FROM query2; 

這兩個查詢的結果都是相同的佈局。但是,如果query1的結果爲空,並且query2的結果中有一些記錄,我將從上面的代碼中收到一個空結果。另一種方式(查詢2的空結果 - 查詢1的幾個結果)它爲我提供了一個完整的結果。

我還測試了兩個查詢切換上面的代碼。但行爲是一樣的。與UNION ALL一樣的東西。

這裏有什麼問題?

編輯:所以,我做了一些進一步的測試。原因似乎在query2內。它甚至不能與自己組合。所以如果我嘗試:

SELECT * FROM query2 
UNION ALL 
SELECT * FROM query2; 

我再次得到一個空集。同樣,當我只使用SELECT部分​​中的一個字段。

編輯2:好吧,它會好起來的。數據集是空的,但在查詢結果的表視圖中,我擁有列過濾器中的所有數據。但是如果我做一個Count(rowname),我會得到一個0。

+0

嘗試列出字段而不是使用'*'。 – SunKnight0

+0

可悲的是,這並沒有解決問題。但謝謝你的嘗試。 ;) – TRA

+0

要清楚,當兩個查詢至少有一個記錄,或者如果query2至少有一個記錄,一切都按預期工作?僅當query1返回沒有發生問題的記錄時?你能爲這些查詢提供SQL嗎?你有沒有嘗試用完整的SQL代碼替換'query1'和'query2'?這可能會給你一個有意義的錯誤。 – SunKnight0

回答

0

經過兩天的測試,我感到厭倦並將代碼移到另一臺機器上。在那裏工作。所以在將它導出到新機器上並將其傳輸到我的PC後,所有功能都應該如此。所以我想這是一個與我使用的前端相關的問題。

所以,如果你碰到水手。類似的確保你的項目沒有任何損壞。 (即使Access沒有顯示任何錯誤)