2011-08-01 33 views
0

我目前有一個2003 MS Access數據庫有記錄集基於表的表單。此窗體上還有一個組合框,它具有綁定表中某個字段的控件源。記錄集是查詢的結果,該查詢從另一個表中提取所有可用「服務」,並將所選「服務」的ID存儲在表單綁定表中。 Combobox有三列,列寬定義爲0cm,1cm,1cm,列1是綁定(ID)列。MS Access綁定表上的組合框表

這使我可以從下拉列表中選擇一個'服務',並輸入它,服務的ID存儲在表中。自然地,這個表單可以有許多行綁定到表中的行。

這工作得很好,很好。但是,現在要求此下拉列表中的值基於另一個字段。因此,不是有一組「服務」,在下拉菜單中可能會有幾組「服務」,這些服務將基於另一個組合框出現。

我設法通過修改此服務的記錄集查詢下拉以考慮其他字段,然後再考慮服務列表組合框的onenter()事件,查詢本身(服務列表)。然而,如果我在表單中有五行,每個服務列表將基於當前行的其他字段,而不是各自的字段,導致組合框被空白。這不會影響底層表,但它很煩人。

有什麼建議嗎?

我試着將「限制列表」屬性設置爲「否」,但是當組合框中的第一個字段(這是綁定字段)的寬度爲0CM時,無法完成此操作。當我把它設置爲不等於0CM時,這個組合框的顯示值變成ID字段,這不是我想要的。

回答

1

我在這些情況下使用的解決方法是添加第二個綁定組合框。第二個組合框與第一個組合框完全相同,但有一些重要的區別。

(用於顯示)

  • 頂部z次序的
  • 較少限制的行源(經由置於頂層設置)首先組合框(即,不基於任何其他當前字段的值)
  • 的OnEnter:=[OtherCombo].[SetFocus]

第二組合框(用於編輯)

  • Z順序的底部
  • 行來源受到限制基於一些其他的控制(例如,CategoryControl)
  • 行來源獲取更新的窗體的當前事件(通過發送到備份設置)
  • 行來源得到更新CategoryControl的AfterUpdate事件

因此,第一個組合框永遠不會空白,因爲行來源受到的限制較少。但是,第二個組合框允許您控制用戶根據其他字段選擇的值。

如果您爲每個組合框設置了不同的BackColor,則會發生什麼情況。

0

而不是使用過濾組合框的的OnEnter事件中,你需要重新查詢它在這兩個事件:

  1. 形式的OnCurrent。

  2. 第一個組合框的AfterUpdate事件。

這是一個訪問常見問題(級聯組合框),並不是那麼辛苦。你只需要仔細考慮你想要做的是什麼 - 當第一個組合框中的值發生變化時,你只想改變第二個組合框的內容,這就是爲什麼你要在兩個事件中做到這一點而不是在第二個組合框的OnEnter(當沒有理由這麼做時將會觸發)。

編輯:

我錯過了連續的形式方面。在我看來,這正是連續形式根本無法編輯的情況。相反,我建議將連續表單作爲記錄的靜態列表,並將LinkMaster/LinkChild的另一個子表單綁定到連續表單的PK字段,並使用其他表單(單一表單)編輯詳細信息。您將使用連續表單來選擇一條記錄,並且要做的單個表單顯示完整的細節並進行實際的編輯。

+0

OP正在嘗試以連續形式實現這一點。這就是爲什麼他遇到了問題,這就是爲什麼我提供了「隱藏」組合框作爲解決方案。 – mwolfe02