将值传递给组合框后,MS Access 表单不会更新

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

通过另一个表单上的按钮打开新表单,并将值传递给新表单中的组合框以选择特定的数据集。将值传递给组合框后,表单将不会更新。

我在 MS Access 中使用表单 form1 和按钮 myButton,它再次打开一个新表单 form2。 form2 上有两个组合框用于选择特定的数据集。打开 form2 后,我希望将 comboBox1 设置为取决于 form1 中当前数据集的值。第二个组合框 comboBox2 保存在查询中生成的值列表,该列表再次取决于组合框 1 中的值:组合框 1 和组合框 2 中的两个值是 1:n 相关的,因此在选择组合框 1 中的值后,(嵌入的)comboBox2 中的查询返回comboBox1 中value1 可用的所有数据集。从该查询的列表中,我希望用第一个可用值初始化comboBox2。

我找到了以下代码来设置两个组合框中的值:

Private Sub cmdMyButton_Click()

    DoCmd.OpenForm "frmForm2"
    Forms!frmForm2.comboBox1 = Me.Value1
    Forms!frmForm2.comboBox2 = Forms!frmForm2.comboBox2.ItemData(0)
    
End Sub

到目前为止,一切都按预期运行良好。但是,form2 中显示的数据集始终是基础表的第一个数据集,尽管两个组合框中的值都需要选择另一个数据集。一旦我更改组合框2中的值,表单就会正确更新。

我尝试了不同的更新方法,例如

Requiry
Recalc
Refresh
After_Update
,但表单不会更新(或引发错误)。

sql vba database ms-access combobox
1个回答
0
投票

一旦设置了

comboBox1
的值,您需要重新查询
comboBox2
来更新其列表,因为它取决于第一个组合框的值。

另外,我很确定这一行是不正确的,因为它引用了相同的控件(除非是拼写错误)。

试试这个:

DoCmd.OpenForm "frmForm2"

With Forms.frmForm2
    .comboBox1 = Me.Value1
    .comboBox2.Requery
    .comboBox2 = .comboBox1.ItemData(0)
    .Requery
End With
© www.soinside.com 2019 - 2024. All rights reserved.