使用 VBA 在 Access 中重新查询子表

Posted

技术标签:

【中文标题】使用 VBA 在 Access 中重新查询子表【英文标题】:Requery a Sub Table in Access Using VBA 【发布时间】:2012-03-20 00:55:29 【问题描述】:

http://i.stack.imgur.com/NhBss.jpg

我在 f3AgreeService 表单上有协议项目(父)和服务详细信息(子)。我使用子表 (tService) 而不是子表单来显示服务信息,因为我想利用仅对表可用的子数据表功能(+ 扩展功能。子数据表可以链接到设施/DHB服务信息)(1对1-多)。

我希望能够使用按钮(参见设施/参见 DHB)在 tService 子表单的两个不同子数据表之间切换。代码如下。

问题是子数据表不会自动更新,直到您关闭并重新打开整个表单。每次用户单击时,我都可以肯定地关闭并打开表单。但它看起来很丑。有没有办法只重新查询或更新 tService 以使子数据表信息生效?

Private Sub cmdDHBs_Click()
Dim MyDB As DAO.Database
Set MyDB = CurrentDb
MyDB.TableDefs("tService").Properties("SubDataSheetName") = "Table.tServ_DHB"
MyDB.Close
Call RefreshTable 'How?
End Sub

我尝试过但没有工作的那些: 表单!f3AgreeService.Refresh Forms!f3AgreeService.Recalc 表单!f3AgreeService.Query Forms!f3AgreeService.Repaint

【问题讨论】:

如果您打算在多用户环境或跨网络使用此应用程序,您就是在给自己找麻烦:allenbrowne.com/bug-09.html 你能解释一下为什么吗?我阅读了附加的链接,但它是关于将子数据表属性设置为自动。更新链接表的最佳方法是什么?一个接一个? 您已经遇到了问题。这些情况可能会变得更糟。您可以使用子表单或表单来更新相关表格。 我试图关闭并打开窗口,它似乎可以做到这一点。我的意思是如果我可以使用子表单进行更新,那么表格没有太大区别? 【参考方案1】:

如果你真的坚持这样做,我不建议这样做,你可以在更改子数据表后重新加载子表单的源对象:

Me.MySubformName.SourceObject = "Table.tService"

【讨论】:

以上是关于使用 VBA 在 Access 中重新查询子表的主要内容,如果未能解决你的问题,请参考以下文章

一天摘要的 VBA 访问查询

#姓名?在 Access 2010 中重新查询后的表单上

Access vba:如何在两个相关表中执行插入?

基于筛选查询的MS Access查询

是否可以在 Access 查询中使用其模块名称来限定 VBA 函数调用?

如何在 MS Access 2010 中使用 VBA 选择多值组合框的值?