2013-03-28 56 views
0

經過幾個小時的搜索後,我找不到任何解決方案,我遇到了這個小問題。查詢條件:自公共變量或形式

我有一個查詢從表單中檢索其標準之一。我已經正確地從查詢中引用了表單的值,並且它可以工作,但是我想要做的更復雜一點:當表單關閉時,我想用「默認值」啓動查詢。

我試圖用兩種不同的方法做到這一點: a)在查詢條件下定義一個「IIf」:我需要一個函數來檢查我檢索值的窗體是否打開。 b)用一個默認值定義公共變量,這個默認值可以從表單中改變:我不知道在哪裏/何時初始化變量的值。

有沒有人有更好的想法如何做到這一點?

TL; DR:查詢從窗體打開時獲取標準。如果窗體關閉,則查詢使用默認值。幫幫我!

回答

2

您可以在模塊中創建一個VBA函數來做到這一點:

Function MyCriterion() As Long 

    MyCriterion = 1234       ' default value 

    If CurrentProject.AllForms("MyForm").IsLoaded Then 

     MyCriterion = Forms("MyForm").MyControl.Value 

    End If 

End Function 
+0

謝謝!它完美的作品! 「On Error Resume Next」正是我所誤解的。 – modellero 2013-03-28 10:10:19

+0

還有一個問題,如果你能幫助我:我想「MyCriterion」是一個通配符作爲默認值,但是當我把 'MyCriterion =「*」' 查詢不承認它作爲通配符。你有沒有關於如何將通配符傳遞給VBA查詢的建議?謝謝! – modellero 2013-03-28 10:27:22

+0

我將MyCriterion定義爲返回'Long'。如果你想使用'*'作爲默認值,你應該將其定義爲返回'String'並使用'LIKE MyCriterion' – grahamj42 2013-03-28 10:32:53