ACCESS的VBA刷新窗体数据的3种方法

1,442次阅读
没有评论

共计 1894 个字符,预计需要花费 5 分钟才能阅读完成。

efresh 和 requery 的区别:

以子窗体为例。

第一种:

Me.frmChild.Requery

这是最有效,最简单的方法。

第二种:

Me.frmChild.Form.Refresh

这种方法并不能使窗体中的数据立即改变。

第三种:

Me.frmChild.SourceObject =“”

DoCmd.RunSQL strSQL

Me.frmChild.SourceObject =“frmsalelist_child”

这种方法的效果等同于第一种。

 

从英文字面翻译来看,请求是请求,是刷新更新,
刷新方法用于立即刷新指定窗体或数据表中基础数据来源中的记录,以反映您或多用户环境下的其他用户对数据的更改。
语法:form.Refresh,
值得说明的是:使用 Refresh 方法和单击“记录”菜单中的“刷新”命令等效
。------------------- ----------------------------------
注意:刷新方法只显示对当前集中的记录所作的更改。因为刷新方法实际上没有重新查询数据库,当前集中不包括自从数据库上一次重新查询以来已被添加的记录,也不排除已被删除的记录。它还不能排除不再满足查询或筛选准则的记录。重新查询数据库,就要用到 Requery 方法。也可以说刷新比请求要弱一些。

重新查询方法是通过重新查询窗体或控件的数据源更新基于指定窗体的数据,或激活窗体上的控件。
语法:[对象] 重新查询,这个对象不仅可以是形式窗体,还能是控制等控件
其与刷新还有不同在于它可以使窗体数据更新,还能使窗体中的控件中的数据或可选数据更新,比如组合框和列表框中可选的值。

所有数据刷新,无非就是更新当前显示的数据,以确保显示的是最新的数据。在 Access 中,数据的刷新主要有 3 种方式:
Requery 重新查询
刷新刷新
Recalc 更新计算控件
下面就来说一下这 3 种方法各自的特点和使用技巧。

1.Requery 方法,这个是最常用到的了,实际上它是重新查询,不过绝大部分人都称之为刷新,已经有些约定成俗了。它的语法为: 对象.Requery。基本上所有和数据有关的控件对象都具有 Requery 方法,它执行下列操作:
* 重新运行基于指定窗体或控件的查询。
* 显示任何新的或已更改的记录,从窗体中移除已删除的记录。
* 根据对窗体的 Filter 属性所作的任何更改,来更新显示记录。
有些刷新子窗体数据是通过设置子窗体控件的“源对象”属性,来重新加载子窗体实现刷新,这个说到底其实也是用的 Requery 方法,因为窗体加载时会自动调用 Requery 方法.Requery 是最稳定有效的数据刷新方法。至今没有听到过存在不良反应的情况

。2. 刷新方法,相对于 Requery 方法,这个用的就要少一些了,这个其实才是准确意义上的刷新它的语法为: 窗体.Requery,和菜单中的“新”菜单项功能一样.REFRESH 方法刷新数据时,它并不重新查询数据,因此它只会更新当前记录源数据的更改,不会显示新的记录,也不会移除被删除的记录。看上去和重新查询方法相比存在很多不足,但是刷新方法因为不需要重新查询,因此速度比重新查询方法要快。另外通过使用一些特别的编程技巧,能实现一些很有趣的功能。

比如通过重新查询方法重新查询数据后,所有数据会被重新加载,这样记录的当前位置就会跑到第一条记录去了。但有的时候在一个数据列表中,我们需要打开对应指定记录的修改窗体,修改完成后,需要在列表中更新以显示刚才的修改。这个时候我们希望列表中当前位置还在原来的地方,而不是跑到第一条记录,这时我们就可以调用刷新方法来刷新,这样位置就不会变更了。但是这样必须是基于单个表的,如果是来源于多个表的查询,有的时候刷新会无效。所以我们再来改良一下。
将列表窗体作为子窗体放到另外一个窗体中,然后我们对这个主窗体调用刷新方法,哈哈,看到了什么?列表子窗体中的数据被刷新了,甚至新的记录,被删除的记录这些也全部被显示出来了!最重要的是,记录的当前位置还在原来的那一行,而没有像使用重新查询方法那样,跑到第一行记录去了!
不足的地方: 对列表窗体不能应用排序和筛选(可以在记录源查询中排序和设置条件),否则刷新后位置还是会跑到第一行记录的。另外如果有多个子窗体和主窗体链接,绝对不要对主窗体用刷新方法,因为会造成访问崩溃,这是经过多次教训得到的经验。

3. Recalc 方法,这个基本上很少用到,它主要是用于刷新计算控件(即控件来源是以等号(=)开头的控件),语法为: 窗体.Recalc

 

转至 https://blog.csdn.net/csdnhxs/article/details/80420531

正文完
 0
水东柳
版权声明:本站原创文章,由 水东柳 2019-01-29发表,共计1894字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)