Access 的新手,已经花了很多时间试图解决这个问题,所以这里是背景:
注意:已经看过这个:ComboBox won't allow me to select an item,但没有提供我需要的答案。
我有一个数据库,允许一个人通过表单输入和存储客户详细信息,目前我有 3 个具有以下关系的表:
客户 - 客户 ID (PK) - 名字 - 姓氏
流程 - ProcessID (PK) - 详细信息 - PartsUse -
作业 - JobID (PK) - CustomerID (FK) - ProcessID (FK) - MachineDetail -
Customer 与 Job 有 1-M 关系,但通过扩展(不知道为什么) Process 也与 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
绑定。
组合框确实填充正确,但每次我尝试选择一个项目时,我都会收到错误消息:“无法编辑控件,它绑定到未知字段客户”。
这就是它的全部。抱歉,如果这是一个常见/易于解决的问题,但它困扰了我好几天。