通过另一个表单上的按钮打开新表单,并将值传递给新表单中的组合框以选择特定的数据集。将值传递给组合框后,表单将不会更新。
我在 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
,但表单不会更新(或引发错误)。
一旦设置了
comboBox1
的值,您需要重新查询 comboBox2
来更新其列表,因为它取决于第一个组合框的值。
另外,我很确定这一行是不正确的,因为它引用了相同的控件(除非是拼写错误)。
试试这个:
DoCmd.OpenForm "frmForm2"
With Forms.frmForm2
.comboBox1 = Me.Value1
.comboBox2.Requery
.comboBox2 = .comboBox1.ItemData(0)
.Requery
End With