2016-02-11 107 views
0

我有一個表格,每行一個表格,從表中拉出。每行有兩個ComboBox控件。第一個ComboBox的選項鍊接到一個Categories表。第二個ComboBox的選項需要鏈接到第一個ComboBox的子類別。MS-Access 2013;根據多記錄表格中的記錄數據更改組合框選項

我曾嘗試在設計時在行源中使用WHERE語句,從而生成所有子類別。

我已經嘗試過在類別組合框的變化事件上有WHERE語句和一個查詢命令,它們產生了最後一個被更改類別的子類別。這是一個問題,因爲所有行都有相同的選項,而不是基於該記錄/行的類別的選項。

我需要的是每行查詢子類別/類別映射表,並根據該行的類別選擇篩選結果。這可能嗎?如果是這樣,這怎麼辦?我不害怕使用VBA來獲得我需要的結果。

回答

0

在窗體的On_Current事件中,可以根據第一個組合框的列值動態更改第二個組合框的行源。您可能還需要在第一個組合框的after_update事件中執行此操作。

像這樣的事情

Select Case Me.cboCategory 
Case "Category 1" 
    Me.cboSubCategory.RowSource = "qryCat1Subclass" 
Case "Category 2" 
    Me.cboSubCategory.RowSource = "qryCat2Subclass" 
Case Else 
    Me.cboSubCategory.RowSource = "" 
End Select 

我沒有這兩個組合框,只有一個,但其內容必須基於另一個字段的值。這就是我的做法。

+0

這適用於動態過濾,但具有不同類別的行將在組合框中沒有文本,直到選中具有相同類別的行。 – DevLocus

+0

@DevLocus。您的類別和子類別是否綁定了字段?如果他們是應該工作。如果不是,則連續窗體只顯示所有行上當前記錄的值。 (如果你想做更多花哨的東西,這會讓你感到非常痛苦)。我完全按照我所說的(儘管我沒有將組合框稱爲Me.c.Category的字段,在我的情況下,它是來自數據庫的文本字段) – akc42

+0

當然Case Else只是一個退出條款。您應該爲所有可能的值添加更多Case「Category n」元素。 – akc42