设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 10245|回复: 24
打印 上一主题 下一主题

[窗体] 【Access小品】论坛三杰---老头之间的巅峰对决

[复制链接]
跳转到指定楼层
1#
发表于 2010-7-1 20:50:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-7-2 01:23:39 | 只看该作者
传说中的沙发
有坐又有的学
3#
发表于 2010-7-2 08:56:20 | 只看该作者
学习学习
4#
发表于 2010-7-2 09:43:16 | 只看该作者
todaynew有两个高:ACCESS水平高,解答问题热情高!说来惭愧,在什么样的情况下就要应用到刷新这个问题我真的不明白,todaynew能否解释一下?
5#
 楼主| 发表于 2010-7-2 09:56:57 | 只看该作者
本帖最后由 todaynew 于 2010-7-2 09:59 编辑
todaynew有两个高:ACCESS水平高,解答问题热情高!说来惭愧,在什么样的情况下就要应用到刷新这个问题我真的不明白,todaynew能否解释一下?
ycxchen 发表于 2010-7-2 09:43

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




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2010-7-2 11:37:36 | 只看该作者
万分感谢todaynew!向你学习了!
9#
发表于 2010-7-2 14:31:19 | 只看该作者
牛人,收藏珍品!
10#
发表于 2010-7-3 09:52:30 | 只看该作者
学习了就得顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-19 21:51 , Processed in 0.114388 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表