设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5520|回复: 10
打印 上一主题 下一主题

[窗体] 【Access小品】画地为牢--动态控制有效性规则

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-22 16:29:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2010-10-22 16:47 编辑

xyh2732 同志问如何将若干相加的控件值都控制在一定范围内,使得其合计限制为万元以下。这是一个动态控制有效性规则的问题,可以通过控件的获得焦点事件加以解决。如果控件比较多的话,需要在窗体的加载事件中,将一个有效性规则设置的函数,赋值给各个控件的获得焦点事件。这样可以省去逐个写控件的焦点事件。在此例中由于控件名称有一定的规律性,因此加载事件可以写的比较简单。如果控件的名称没有规律性,则需要在加载事件中,加入对控件名称筛选的判断语句。





Private Sub Form_Load()
Dim ctls As Controls
Dim ctl As Control
Set ctls = Me.Form.Controls
For Each ctl In ctls
    If Asc(ctl.Name) >= Asc("A") And Asc(ctl.Name) <= Asc("F") Then
        ctl.OnGotFocus = "=AllOnGotFocus('" & ctl.Name & "')"
    End If
Next ctl
End Sub

Function AllOnGotFocus(ctlName As String)
Dim ctls As Controls
Dim ctl As Control
Dim S As Single
Set ctls = Me.Form.Controls
For Each ctl In ctls
    If Asc(ctl.Name) >= Asc("A") And Asc(ctl.Name) <= Asc("F") Then
        If ctl.Name <> ctlName Then
            S = S + Nz(ctl.Value, 0)
        End If
     End If
Next ctl
S = 10000 - S
ctls(ctlName).ValidationRule = "<" & S
End Function

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-10-22 22:26:04 | 只看该作者
todaynew 又出新东东了,大家赶紧下,谢谢!

点击这里给我发消息

3#
发表于 2010-10-22 23:53:02 | 只看该作者
又有新作, 收藏!!
4#
发表于 2010-10-23 08:51:45 | 只看该作者
学习了
5#
发表于 2010-10-23 10:41:59 | 只看该作者
谢谢分享,学习!
6#
发表于 2010-10-25 09:06:26 | 只看该作者
谢谢分享
已经收藏了
7#
发表于 2010-10-26 15:58:31 | 只看该作者
好东西,学习一下。。。。。
8#
发表于 2012-1-10 15:13:37 | 只看该作者
谢谢分享,学习!
9#
发表于 2015-5-25 20:20:59 | 只看该作者
谢谢
回复

使用道具 举报

10#
发表于 2018-1-1 18:51:35 | 只看该作者
1111111111111111111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-1 20:32 , Processed in 0.109528 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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