提问人:Grabu 提问时间:10/23/2023 最后编辑:Grabu 更新时间:10/23/2023 访问量:26
MS Access 表单在将值传递给组合框后不会更新
MS Access Form won't update after passing value to combobox
问:
通过另一个窗体上的按钮打开新窗体,并将值传递到新窗体中的组合框以选择特定数据集。将值传递到组合框后,窗体不会更新。
我在 MS Access 中使用带有按钮 myButton 的表单 form1,它再次打开一个新的表单 form2。form2 上有两个组合框用于选择特定的数据集。打开 form2 后,我希望将 comboBox1 设置为一个值,具体取决于 form1 中的当前数据集。第二个组合框 comboBox2 包含查询中生成的值列表,该列表再次依赖于 comboBox1 中的值: comboBox1 和 comboBox2 中的两个值是 1:n 相关的,因此在选择 comboBox1 中的值后,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 中显示的数据集将始终是基础表的第一个数据集,尽管两个组合框中的值都需要选择另一个数据集。只要我在 combobox2 中更改值,表单就会正确更新。
我尝试了不同的更新方法,例如 、 和 ,但表单不会更新(或引发错误)。Requiry
Recalc
Refresh
After_Update
答:
0赞
Kostas K.
10/23/2023
#1
设置值 of 后,需要重新查询以更新其列表,因为它依赖于第一个组合框的值。comboBox1
comboBox2
另外,我很确定这一行是不正确的,因为它引用了相同的控件(除非它是拼写错误)。
试试这个:
DoCmd.OpenForm "frmForm2"
With Forms.frmForm2
.comboBox1 = Me.Value1
.comboBox2.Requery
.comboBox2 = .comboBox1.ItemData(0)
.Requery
End With
评论
0赞
Grabu
10/23/2023
嗨,科斯塔斯,谢谢你的回答!不幸的是,它没有奏效。您引用的行没有错别字:comboBox2 中的可用选项列表由查询(嵌入在组合框中)生成 - 此查询依赖于 comboBox1(框是级联的)。我想使用从此查询中获得的列表的第一个元素初始化 comboBox2。这很有效,除了窗体的其余部分不会更新,一旦选择了第一个元素。我试图按照你所说的去做,但不幸的是结果是一样的。Requery
0赞
Grabu
10/23/2023
我编辑了这个问题以清除 comboBox1 和 comboBox2 的级联。
评论