2013-01-22 59 views
0

好了,所以在這花了幾個小時,下面有無數的在線教程後,我仍然無法得到這個..working ..如何將<ALL>選項添加到訪問的ComboBox

基本上,我有組合框顯示一個<ALL>選項,但對於報告,它實際上並沒有返回任何內容,這只是爲了美觀。我如何獲得它返回數據?有3個組合框需要填寫,其中一個是治療類型,另一個是治療日期(兩者都將經常使用(ALL)),以及出生月份,該月份將始終是特定的月份。

用於治療II型組合框的查詢如下:

Select "(All Records)" 
FROM Treatment 
UNION Select Treatment.Treatment 
From Treatment; 

治療日期組合框的查詢如下:

Select 0, "(All Records)" 
FROM Events 
UNION 
Select Events.DatefieldID, Events.Datefields 
From Events; 
+0

我認爲解決方案將在您如何使用報表中的組合框返回的值...該代碼/查詢的外觀如何? –

+0

你是什麼意思?我得到了數據庫修復它,因爲一些其他的dev已經搞砸了..所以現在我不得不嘗試,並認爲我們做了什麼,以及 – amartin94

回答

1

<All>不是唯一的通過了解一個特殊值Sql ...

如果您正在檢查您的其他查詢where treatmentType = [Value From Combo Box] ...並且組合框中的值爲「<All>「..然後沒有行將符合該條件,並且不會返回任何內容。

相反,你需要調整你的邏輯來處理<All>值不同...

where treatmentType = [Value From Combo Box] OR [Value From Combo Box] = "<All>"

+0

自從去年我去年做了它,我仍然真的生鏽SQL,所以我應該把聯盟之後的WHERE聲明放在這裏? – amartin94

+2

這個'where'語句不會出現在你發佈的任何代碼中......相反,它會進入使用組合框中所選值的代碼/ sql查詢。 –

+0

是的,看到了,這是我的問題,如果我理解你的權利,有一個按鈕,根據組合框的輸入提出報告,但是,原始開發人員爲此按鈕寫了VBA - 我是一個java人,而不是VB :/ – amartin94

0

作爲一種替代解決方案邁克爾斯,你可以使用使用SQL通配符%(這是Access中的*)匹配所有記錄。 組合框行來源查詢:

Select "*" 
FROM Treatment 
UNION Select Treatment.Treatment 
From Treatment; 

而且Like [Forms]![FormName]![ComboboxName]至於結果查詢領域Treatment標準。 您會注意到空字段仍然不匹配。這可以通過過濾Nz([Treatment],0)字段來存檔(使Access返回0,它與*匹配,而不是NULL,但不是)。

這保持了我的結果查詢的SQL代碼,包括很多關節精簡。