我有一个包含默认值的主表,我想将其作为值输入到我创建的表单中。主表是 TblDefault,创建表单所用的相关表是 TblAssessment。 DefID 是两者共同的 ID。组合框是 cboDefault,它通过显示值来工作。但我面临的挑战是编写 vba 代码,以便能够从组合框中选择一个值并在表单字段中输入该值。表单中有 5 个字段,文本字段“Ques1Comment”、“Ques2Comment”等。请我需要帮助!!!
Private Sub cboDefault_AfterUpdate()
Dim defaultID As Variant
defaultID = Me!\[DefID\].Value
Dim selectedField As String
selectedField = Me![cboDefault].Value
Select Case selectedField
Case "Ques1Comment"
Me![Ques1Comment].Value = DLookup("DefaultValue", "TblDefault", "DefaultName = '" & defaultID & "'")
Case "Ques2Comment"
Me![Ques2Comment].Value = DLookup("DefaultValue", "TblDefault", "DefaultName = '" & defaultID & "'")
' ... Repeat for other fields
End Select
Me![cboDefault].Requery ' Requery the combo box control
End Sub
你不需要做这个努力
1 - 作为示例创建此表 2 - 创建您的表单并将此查询分配给您的组合框 3 - 设置组合框属性如下 4 - 更新事件后将此代码分配给组合框
Private Sub EmpID_AfterUpdate()
If Trim([EmpID] & "") = vbNullString Then
Me.EmpAge = ""
Me.EmpBDate = ""
Me.EmpAddress = ""
Else
Me.EmpAge = Me.EmpID.Column(2)
Me.EmpBDate = Me.EmpID.Column(3)
Me.EmpAddress = Me.EmpID.Column(4)
End If
End Sub
5 - 最终结果如下 6 - 下载附带的示例 下载示例的链接
您的 VBA 代码似乎基本正确,但您在
DLookup
查询中使用“DefaultName”而不是“DefID”,您提到的是表之间的通用 ID。这是更正后的代码:
Private Sub cboDefault_AfterUpdate()
Dim defaultID As Variant
defaultID = Me![DefID].Value
Dim selectedField As String
selectedField = Me![cboDefault].Value
Select Case selectedField
Case "Ques1Comment"
Me![Ques1Comment].Value = DLookup("DefaultValue", "TblDefault", "DefID = " & defaultID)
Case "Ques2Comment"
Me![Ques2Comment].Value = DLookup("DefaultValue", "TblDefault", "DefID = " & defaultID)
' ... Repeat for other fields
End Select
Me![cboDefault].Requery ' Requery the combo box control
End Sub
确保数据库架构中的字段名称和表名称正确。此代码假定“TblDefault”中的字段“DefaultValue”包含要复制到表单字段的值。另外,请确保“TblDefault”中的“DefID”字段是数字,因为您在
DLookup
查询中使用它。