2013-02-05 35 views
0

我有一個組合框&複選框(chkClosed)。對於組合框,我已將行源作爲選擇查詢。它有(兩者都來自表1)兩個字段:字段1,字段2 (未示出) &其標準是[Forms]!Form1]![chkClosed]組合框訪問選擇查詢不總是評估複選框值

表1示例性數據:

Field1 Field2 
Test  -1 
Test1  0 
Test2  0 
Test3  -1 

問題是,當我取消chkClosed在運行時的下拉列表不會改變。我知道它正確評估它,雖然好像我切換到設計,然後返回到窗體視圖,而它的檢查顯示Test & Test3在下拉列表&反之亦然。只是時間它評估它是在啓動而不是不斷,我相信我將不得不改變事件。這只是一個示例,我所做的數據實際上來自SQL源,但邏輯仍然適用,我只使用條件:IIf([Forms]![Form1]![chkClosed]=-1,1,0)

回答

1

您需要重新查詢組合框以更新行源。在複選框的AfterUpdate事件中,添加以下行:

Private Sub chkClosed_AfterUpdate() 
    Me.Combo1.Requery 
End Sub 
+0

確實解決了我的問題,但是我不明白爲什麼?行源只在窗體啓動時被編譯? – greggmcfg

+1

類別。爲了讓Access知道它必須在您的複選框值發生變化時重新查詢控件源,它必須構建一個依賴關係樹(類似於Excel在決定什麼時候需要重新計算函數時)。這會增加大量的複雜性,但它可能不是你想要的。想象一下,你的行源查詢需要30秒才能執行。當用戶檢查或取消選中其他方框時,您可能會決定不希望發生這種情況。 Access讓開發人員做出決定;我認爲這是一個明智的選擇。 – mwolfe02

+0

那麼它通常在何時編譯該列表? – greggmcfg