MS ACCESS ---通过VBA刷新所有内容

时间:2011-02-07 20:51:11

标签: ms-access forms

如何通过vba刷新所有内容? 我想刷新所有打开的表格......

3 个答案:

答案 0 :(得分:3)

@ CodeSlave的答案可能没有做你需要的,是你需要的VBA方法是 requery ,而不是刷新。刷新将显示对现有记录所做的更改,但只有重新查询才会显示新添加的记录。

这是一个更简洁的代码版本(把它放在一个模块中,以便你可以从任何形式调用它):

Public Sub RequeryOpenForms()
    Dim f as Form

    For Each f In Access.Forms
        f.Requery
    Next
End Sub

注意:不幸的是,requery有丢失当前所选记录的副作用。如果有很长的记录列表,这对于使用来说尤其令人沮丧,因为他们可能需要向下滚动很长时间才能找到他们之前查看过的记录。

答案 1 :(得分:1)

这样的事情怎么样?

Sub AllForms()
Dim obj As AccessObject
dim dbs As Object
Dim i As Integer
dim intFormCount as Integer

    Set dbs = Application.CurrentProject
    intFormCount  = dbs.AllForms.Count - 1

    For i = 0 To intFormCount
        If dbs.AllForms(i).isloaded = True Then
            dbs.AllForms(i).refresh
        End If
    Next
End Sub

答案 2 :(得分:1)

在上面的评论中,您说:

  

我想要添加的新记录   表格以该表格提供   当我回到它时

您可能想要检查Activate事件。但是除非你知道记录已被添加,否则我很难重新查询表单。我希望如果我需要这样做(我从来没有这样做,实际上 - 我的用户知道Shift-F9哪里有相关性,但大多数人从不需要它),我会使用OnActivate事件并检查当前记录数,如果计数与当前记录集不匹配,则仅重新查询表单。

但是,我认为这是一件相当奇特的事情。一般来说,如果有太多的表单与开放的记录集一起坐下来然后再回来,那么这可能是一个架构错误。它们应该完全关闭,而不是在你离开它们时保持打开状态。这减少了表句柄的数量,以及后端数据库上保存的锁的数量,如果管理不当,这两者都可能是问题。