Office中国论坛/Access中国论坛

标题: 【Access小品】论坛三杰---老头之间的巅峰对决 [打印本页]

作者: todaynew    时间: 2010-7-1 20:50
标题: 【Access小品】论坛三杰---老头之间的巅峰对决
本帖最后由 todaynew 于 2010-7-2 10:31 编辑

  Access软件网论坛中有三个老头,其名曰牛先生、放弃、煮江品茶,皆初学者也。但凡老头均有脾气,固执者要么是老头,要么是疯子。因此上你不要责备他们的问题太肤浅,你也不要责备他们老是问同一个问题,你到了这个年龄也这个德行。看到一个版友的版友好像叫做三十岁学Access什么的,这不值得骄傲。如果有人说五六十岁开始学Access,而且比你认真,比你执着,那你就该汗颜了。老头学习Access这类东西一定是不拘泥常规的,因为他们常常很自行,不喜欢按部就班的做事。在他们看来,按部就班循序渐进是年轻人的事情,老子吃的盐都比你吃的饭多,还有什么老子搞不懂的呢?呵呵。
  老头与老头也有不同,牛先生是不光三七二十一便想为儿子搞一套管理程序,想将自己的管理经验传给后辈。其实后辈自有后辈的想法,就是他用你的程序也是逗你开心,怎么可能真的管用呢?不过从另外一个角度看,牛先生乐此不疲,也算是从Access中得到许多乐趣,以我看这就足够了。放弃不常发言,一旦发言便要问个究竟,管他是否在理,你不说明白,他不放弃。在下与这两老头不同,纯粹娱乐,但凡有点意思的问题便喜欢寻求解法,于是乎著小品数十篇,混迹若干论坛,也小有名气。
  这两日放弃同志问一个窗体刷新问题,实在执拗。想来都是老头,还是给他一个尽善尽美的解法,于是将解法分解递进,供放弃老兄参考之。
第一步:刷新主子两级窗体的自定义函数
Public Function frmrq(frm As Form)
'功能:主子两级窗体刷新
'示例:call frmrq(me.form)
Dim ctls As Controls
Dim ctl As Control
frm.Requery
Set ctls = frm.Controls
For Each ctl In ctls
    If ctl.ControlType = acSubform Then
        ctl.Form.Requery
    End If
Next ctl
End Function
第二步:有时候不太希望刷新主窗体,因为刷新主窗体的话,主窗体记录会跳回到首记录,那么这个函数可以改造为:
Function frmrq(frm As Form, B As Boolean)
'功能:刷新主子窗体
'示例:同时刷新主子窗体:call frmrq(me.form,true)
'      只刷新子窗体:call frmrq(me.form,fasle)
Dim ctls As Controls
Dim ctl As Control
If B = True Then
    frm.Requery
End If
Set ctls = frm.Controls
For Each ctl In ctls
    If ctl.ControlType = acSubform Then
        ctl.Form.Requery
    End If
Next ctl
End Function
第三步:多数情况下虽不想刷新主窗体,但希望刷新主窗体中的列表框和组合框控件,则该函数可以进一步改写为:
Function frmrq(frm As Form, B As Boolean)
Dim ctls As Controls
Dim ctl As  Control
If B = True Then
    frm.Requery
End If
Set ctls = frm.Controls
For Each ctl In ctls
    If ctl.ControlType = acSubform Then
        ctl.Form.Requery
    End If
    If ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
        ctl.Requery
    End If
Next ctl
End Function
作者: amocvv    时间: 2010-7-2 01:23
传说中的沙发
有坐又有的学
作者: michael100    时间: 2010-7-2 08:56
学习学习
作者: ycxchen    时间: 2010-7-2 09:43
todaynew有两个高:ACCESS水平高,解答问题热情高!说来惭愧,在什么样的情况下就要应用到刷新这个问题我真的不明白,todaynew能否解释一下?
作者: todaynew    时间: 2010-7-2 09:56
本帖最后由 todaynew 于 2010-7-2 09:59 编辑
todaynew有两个高:ACCESS水平高,解答问题热情高!说来惭愧,在什么样的情况下就要应用到刷新这个问题我真的不明白,todaynew能否解释一下?
ycxchen 发表于 2010-7-2 09:43

窗体或控件数据源的数据因为追加、更新、删除等操作后,如果不刷新的话,窗体或控件显示的结果与实际结果不吻合。这时候就需要刷新窗体和控件了。也就是说语句对表直接操作后,通常需要刷新绑定的窗体或控件。
作者: ycxchen    时间: 2010-7-2 10:05
万分感谢todaynew,5楼的解释能给个例子说明吗?
作者: todaynew    时间: 2010-7-2 10:38
万分感谢todaynew,5楼的解释能给个例子说明吗?
ycxchen 发表于 2010-7-2 10:05


[attach]42564[/attach]

[attach]42565[/attach]
作者: ycxchen    时间: 2010-7-2 11:37
万分感谢todaynew!向你学习了!
作者: chuang0321    时间: 2010-7-2 14:31
牛人,收藏珍品!
作者: asklove    时间: 2010-7-3 09:52
学习了就得顶
作者: xuwenning    时间: 2010-7-5 09:03
学习了
谢谢分享
作者: fyssz    时间: 2010-8-3 16:00
万分感谢todaynew!向你学习了!
作者: wang1950317    时间: 2010-8-3 21:08
谢谢分享!
作者: lovehere    时间: 2010-8-4 10:25
学习收藏了
作者: szyewj    时间: 2010-8-22 13:13
todaynew有两个高:ACCESS水平高,解答问题热情高!
牛人,收藏珍品!
作者: bjjgq    时间: 2010-9-4 15:31
有一点感想,本来就是近来看看,有没有好东西,一看是一堆代码。想想可能我用不到,就没有仔细看。再然后看了下面的回复,楼主的解释不光认真,而且还有真实的示例,于是觉得楼主很值得学习,于是静下心来,认真的看了一遍,受益匪浅呀!!!看来我这次尝到的不光是知识,.
作者: li_wanli    时间: 2010-9-18 11:19
高手
作者: yingjikong    时间: 2010-10-2 15:54
高人啊

作者: heichizdh    时间: 2011-1-19 15:56
太牛
作者: 高的得攀    时间: 2011-7-13 09:41
谢谢分享,学习中!
作者: yanghua1900363    时间: 2011-7-30 10:45
谢谢分享

作者: youchytan    时间: 2011-7-30 19:01
高手就是高手!
作者: huxinhua    时间: 2012-1-9 10:37
学习收藏了
作者: SRONE    时间: 2012-2-12 00:55
谢谢分享!
作者: 李力军2    时间: 2016-7-29 14:07
好,周到




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3