新在這裏,並已進入花了很多時間試圖解決這個問題,所以在這裏的背景:的MS Access - 組合框不是讓我選擇一個項目
注:已經有一個看看這個:ComboBox won't allow me to select an item ,但沒有提供我需要的答案。
我有一個數據庫,它允許一個人輸入和存儲客戶信息通過的形式,目前我有3代表具有下列關係:
客戶 - 客戶ID(PK) - 姓 - 名字
過程 - 的ProcessID(PK) - 細節 - PartsUse -
工作 - 作業ID(PK) - 客戶ID(FK) - 的ProcessID(FK) - MachineDetail -
客戶有招聘1-M的關係,而是通過擴展名(不知道爲什麼)流程也與Job有1-M關係。因此,這裏的目標是,客戶可以有很多工作,工作應該只有一個進程(以後需要解決這個問題了)。
現在,我的代碼在我的NewJob窗體中綁定ComboBox - 它的目標是在窗體打開時用客戶的所有名稱填充ComboBox,並且只允許用戶在客戶擁有後輸入作業詳細信息已被選中:
Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim recordSet As DAO.recordSet
Dim sql As String
sql = "SELECT [Customer].[CustomerID], [Customer].[FirstName] & [Customer].[LastName] FROM Customer ORDER BY [CustomerID];"
'clear all fields
ClearJobFormFields
'disable all controls until a customer is selected
DisableJobFormControls
With cmbCustomer
.ControlSource = "Customer"
.RowSource = sql
.ColumnCount = 2
.ColumnWidths = "1cm; 3cm"
.BoundColumn = 0
End With
cmbCustomer.ControlSource = "Customer"
cmbCustomer.RowSource = sql
End Sub
要注意,每個窗體都是獨立的 - 我沒有使用子窗體。形式,這是對(NewJob)是否有AllowEdit
設置爲yes,並且形式沒有RecordSource
綁定到它。
組合框DOES正確填寫,但每次我嘗試選擇一個項目,我得到的錯誤:「控制不能編輯它綁定到未知領域的客戶。」
而這一切就是這麼簡單。對不起,如果這是一個常見/容易解決的問題,但它已經困擾了我好幾天。
爲什麼使用VBA填充它?這太過分了。在該窗體的設計窗口中,單擊您的組合框,然後按F4以轉到屬性。在數據選項卡中,將您的查詢輸入到數據源屬性中。 – ApplePie
此外,通常當您在表單上插入組合框時,它會自動詢問您要提供的數據源,您是否跳過該步驟?最後一步就是在AfterUpdate事件上綁定一個事件並解鎖所有以前鎖定的控件。 – ApplePie