2011-04-28 87 views
1

我有一個包含兩個組合框的窗體的訪問數據庫。一個組合框根據第一個組合框的選擇過濾它的選項。這工作完美,但 - 我有一個命令按鈕,更改窗體的記錄源。我只知道如何根據一張表填充組合框。因此,當表單更改記錄源時,組合框仍然充滿來自第一個記錄源的選項。我怎樣才能創建一個查詢來填充組合框選項不是在一般的表上,而是基於當時表單的記錄源是什麼?過濾器訪問組合框

回答

1

在改變記錄源的相同命令按鈕處理程序中,爲每個組合框分配一個新的RowSource。更好的是,在由按鈕處理程序調用的單獨子中執行此操作。您的代碼必須知道或能夠弄清楚新的RowSource應該與新的RecordSource相對應。

編輯在回覆評論

行來源並不一定是一個QueryDef對象,它可以只是一個SQL語句:

Dim sSQL As String 

sSQL = "select whatever from wherever" 
comboBox.RowSource = sSQL 

我什麼也看不到評論同時我正在編輯,但我不明白你在第二個問什麼....在第二個,分開,看看評論,我想你問你可以設置行來源到表單的RecordSource屬性。這是一個糟糕的主意 - 你可能在RecordSource中獲得了比RowSource更多的列,查詢構造的一個基本原則是隻請求你想要的列。

+0

如果我建立一個字符串是一個SQL查詢的基礎在vba有沒有辦法創建一個新的訪問查詢與該字符串,以便我可以引用新查詢作爲組合框的行來源? – Zack 2011-04-28 18:07:04

+0

也有一種方法來使用VBA中的Form_FormName.RecordSource處理程序或訪問SQL來分配行源?或沒有? – Zack 2011-04-28 18:08:52

+1

沒有「Form_FormName.RecordSource處理程序」。正如Roland告訴你的那樣,無論代碼如何變化,記錄源也應該更改組合框的rowsources。 – 2011-04-29 02:22:01