新在这里,并已进入花了很多时间试图解决这个问题,所以在这里的背景:的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