在访问2007-2010中以另一种形式添加记录后,我遇到刷新子窗体的问题。看起来这可能非常简单,但我不确定我在哪里失败。
我有三种形式:
该系统的主要思想是用户使用tb_requirements中的附件创建一般采购要求,然后将一些详细要求添加到一般要求表(tb_records)。
此功能已经在运行,但是当我尝试更新/返回主用户界面(main_user)时,它具有所有开放和新要求,但它不起作用。主用户表单使用表tb_requirements的子表单。所以在main_user的VBA中,我编写了以下代码:
Private Sub Form_Load()
Dim sSQL as String
sSQL = 'with the query I want to show in the screen
Me.tb_requirements.Forms.RecordSource = sSQL
Me.tb_requirements.Forms.Requery
End sub
我也尝试使用.Refresh
和.Recalc
但它无效。你能帮忙吗?
答案 0 :(得分:0)
激活可能是你需要的。它就像在主窗体上重新获得焦点一样(IIRC)。
另一种方法是打开' secondary'对话框模式下的表单。 伪代码:
- start working in main_user
- open purchasing requirements -- but open it in *dialog mode*.
-> code in main_user stops
- work in purchasing requirements
- close purchasing requirements
-> code in main_user starts *from where it stopped*.
-> refresh the subform now - me.sfrmName.form.requery
你可以分两行完成。
1. on button click, open purchasing requirements in dialog mode;
2. refresh subform.
在1到2之间,您正在从事采购要求。
答案 1 :(得分:0)
大家好!我已经弄清楚了。我缺少的是在添加新记录后关闭表单和表格。
DoCmd.Close acForm, "tb_requirements", acSaveYes
DoCmd.Close acTable, "tb_requirements", acSaveYes
一旦我这样做了.Requery可以工作,否则它仍然保留相同的数据。非常感谢你的时间和建议,真的很感激。