2016-09-30 115 views
0

我有一個組合框,選中時填充城市的ListBox。ComboBox選項在選中時消失

我添加使用,成功地填充所有ListBox中城市的組合框聯合查詢的備選方案(全部),但它留下的空白組合框它的選擇了。我希望「(全部)」留在該組合框中。

對美國組合框行來源是:

SELECT tblStatesProvince.ID, tblStatesProvince.LngState 
FROM tblStatesProvince 
UNION Select Null as AllChoice, "(all)" as Bogus From tblStatesProvince 
ORDER BY tblStatesProvince.LngState; 

的城市列表框行來源是:

SELECT tblCities.ID, tblCities.City, tblCities.State 
FROM tblCities 
WHERE (((tblCities.State)=[Forms]![frmCities].[cboSelectState])) OR ((([Forms]![frmCities].[cboSelectState]) Is Null)) 
ORDER BY tblCities.City; 
+2

你可能會考慮更換空值,因爲即使空不等於空,類似於-1(假設tblStatesProvince.ID可能是數字),然後將WHERE語句調整爲OR((([Forms]![frmCities]。[cboSelectState])= -1)) – SqlOnly

回答

3

我會懷疑在原SELECT語句中使用的NULL是問題的根源。空值實際上只是值的佔位符,並不能與(典型)數據類型(如字符串或數字)進行比較。 NULL沒有數據類型。

我會改寫兩項聲明如下(假設tblStatesProvince.ID是一個數字),這消除源於攀比NULL

SELECT tblStatesProvince.ID, tblStatesProvince.LngState 
FROM tblStatesProvince 
UNION Select -1 as AllChoice, "(all)" as Bogus From tblStatesProvince 
ORDER BY tblStatesProvince.LngState; 

SELECT tblCities.ID, tblCities.City, tblCities.State 
FROM tblCities 
WHERE (((tblCities.State)=[Forms]![frmCities].[cboSelectState])) OR ((([Forms]![frmCities].[cboSelectState]) = -1)) 
ORDER BY tblCities.City;