我有一个MS Access表单来输入采购订单。它是一个主要表单,包含一般订单详细信息 - 供应商名称,日期,然后是数据表视图中的子表单,用户将其放入实际订购的项目中。子表单中的第一个字段是用于选择项目的组合框,下一个字段是订购的数量,然后自动计算价格和总字段。
我希望组合框只显示属于主表单上选择的供应商的项目。我使用以下代码成功完成了此操作
Private Sub CmbSupplier_Change()
Me!sfrmOrderDetail.Form!CmbItem.RowSource = "SELECT Items.ID, Items.Product, " _
& " Items.Supplier" _
& " FROM tblItems" _
& " WHERE ((Items.Supplier)= " _
& Me.CmbSupplier & ");"
End Sub
我也把它放到了Form_Current()
事件中 - 所以当我换成新记录时它应该重做它。
然而,在输入几个订单后,我回到上一个订单,使用表单返回按钮检查我输入的内容,我看到其余的信息仍然存在,items
字段(组合框) )子窗体的第一条记录是空的。填写了任何其他行。当我用光标进入那个空白区域时,它会刷新'并填写价值。
我很清楚,例如,我的第一个订单供应商是 Staples 。我的subfrom中有三行 - ink , stapler , paper 。离开记录并重新登录后,会发生以下情况:
答案 0 :(得分:0)
我很确定这里会发生什么:
Form_Current
运行并将Rowsource更改为当前供应商CmbItem
在您点击它之前不会选择它。解决方案应该是添加
Me!sfrmOrderDetail.Form!CmbItem.Refresh
更改Rowsource后。