在另一个表单上添加记录后刷新子表单

时间:2017-05-16 21:51:39

标签: ms-access access-vba ms-access-2010

在访问2007-2010中以另一种形式添加记录后,我遇到刷新子窗体的问题。看起来这可能非常简单,但我不确定我在哪里失败。

我有三种形式:

  • 一个名为main_user的主要用户表单,
  • 用户创建名为tb_requirements
  • 的购买要求的另一个用户
  • 和另一个链接到名为tb_records的tb_requirements。

该系统的主要思想是用户使用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但它无效。你能帮忙吗?

2 个答案:

答案 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可以工作,否则它仍然保留相同的数据。非常感谢你的时间和建议,真的很感激。