【发布时间】:2020-03-28 16:32:55
【问题描述】:
我必须坚持旧的(凌乱的)桌子设计。在我正在开发的这个界面上,有一个组合下拉列表,它是一个固定值列表。选项为 Group1、Group2 和 Group 3。基于此,需要将依赖组合设置为正确的行源和控制源。
表单被锁定,用户可以浏览记录(第一个、最后一个、下一个上一个,以及一个未绑定的组合以跳转到记录)。在这些操作期间,我只想刷新依赖组合应该从哪个列表中提取,以及它应该绑定到什么值,以显示正确的值。
当用户点击创建“新”记录时,我不会显示相关下拉列表(或启用它。尚未决定),直到他们在第一个组合中选择一个值,告诉我们哪个组是的。
为了控制这一点,我创建了一个用于此表单的函数。这就是那个函数:
Private Function MyGroup()
'Mybitval is a table value that is a bit data type. It means group1
If Me.Mybitval = True Then
Me.cboGroupType.Value = "Group1"
ElseIf Me.Mybitval = False And Nz(Me.MyID1, 0) <> 0 Then
Me.cboGroupType.Value = "Group2"
ElseIf Me.Mybitval = False And Nz(Me.MyID1, 0) = 0 Then
Me.cboGroupType.Value = "Group3"
End If
Select Case Me.cboGroupType
Case "Group1"
Me.cboGroupName.RowSource = "SELECT Group1.ID, Group1.G1Name FROM Group1 ORDER BY Group1.G1Name;"
Me.cboGroupName.ControlSource = me.FKID1
Case "Group2"
Me.cboGroupName.RowSource = "SELECT Group2.ID, Group2.G2Name FROM Group2 ORDER BY Group2.G2Name;"
Me.cboGroupName.ControlSource = Me.FKID2
Case "Group3"
Me.cboGroupName.RowSource = "SELECT Group3.G3ID, Group3.G3Name FROM Group3 ORDER BY Group3.G3Name;"
Me.cboGroupName.ControlSource = me.FKID1
End Select
Debug.Print Me.cboGroupName.RowSource
Debug.Print Me.cboGroupName.ControlSource
Debug.Print Me.cboGroupName.Value
End Function
我的想法是我在加载时调用此函数,在我转到第一条记录之后,然后在任何导航按钮上单击或在更新 go to combo 之后。
问题是,cbogroupname 从不显示它在控制源中的值。当我尝试加载表单时,我的调试行源显示了正确的 sql,而控制源显示了它所在的当前记录的正确表字段的值,但有两件事似乎不起作用。如果我不对值进行第 3 次调试,则表单加载正常,但组合不会显示正确的值,即使它绑定到具有值的表列也是如此。如果确实调试该值,我会收到运行时错误“2424”:“您输入的表达式包含 [我的应用程序] 找不到的字段、控件或属性名称。”
当我点击调试时,它转到函数的最后一行: Debug.Print Me.cboGroupName.Value
当我去保存一条新记录时,我会运行验证,并且拥有这 1 个组合,而不是 3 个不同的具有交替可见性的组合,似乎更容易。这有什么原因不能按我想要的方式工作吗?
谢谢!
【问题讨论】:
标签: vba ms-access combobox ms-access-2010