如何在表单中使用组合框在 MS Access 的不同字段中输入不同的值

问题描述 投票:0回答:2

我有一个包含默认值的主表,我想将其作为值输入到我创建的表单中。主表是 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
database ms-access combobox data-entry
2个回答
0
投票

你不需要做这个努力

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 - 下载附带的示例 下载示例的链接


0
投票

您的 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
查询中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.