0
我正在寫一些VBA在我的MS Acccess數據庫中創建一個搜索頁面,並跑入在Search_Click()
子一些麻煩DoCmd.ApplyFilter
。的MS Access VBA DoCmd.ApplyFilter ISNULL()評估假
我的代碼看起來像這樣
Private Sub Search_Click()
DoCmd.ApplyFilter "", _
"([site] = [Forms]![SWP Search]![txtSite] " & _
" Or IsNull([Forms]![SWP Search]![txtSite])) " & _
"AND " & _
"([asset] = [Forms]![SWP Search]![txtAsset] " & _
" Or IsNull([Forms]![SWP Search]![txtAsset]))"
End Sub
或者僞代碼...
Shows results where true...
([site column] = txtbox1 OR isnull(txtbox1))
AND
([asset col ] = txtbox2 OR isnull(txtbox2))
顯然,所需的功能如下...
- 網站選擇,資產空白 - >僅在網站上過濾
- 網站選擇,資產選擇 - >既
- 網站的空白,對過濾資產空 - >返回所有行
- 網站的空白,資產選擇 - 資產只有
>過濾但是,什麼是實際發生的情況是。 ..
- 站點選擇,資產空白 - >工作
- 站點選擇,選擇資產 - >工作
- 網站的空白,空白的資產 - >個沒有行返回
- 網站的空白,資產選擇 - >沒有行返回
所以它看起來像當網站是空白的,ISNULL()是不是真正的評估等的第一部分過濾器是假的,只是在那裏退出然後。
任何想法,爲什麼?
IsEmpty()僅適用於Variant類型的變量。 –
事實證明,我爲組合框設置了默認值「'」'。我認爲這將意味着NULL,但顯然它不。我檢查了調試器,當空的時候IsNull()沒有被評估爲true。所以我擺脫了默認值,'IsNull()'效果很好。問題解決了! –
如果您希望默認值爲Null,請將默認值屬性設置爲「Null」(不帶引號)。 –