Office中国论坛/Access中国论坛

标题: 【Access小品】画地为牢--动态控制有效性规则 [打印本页]

作者: todaynew    时间: 2010-10-22 16:29
标题: 【Access小品】画地为牢--动态控制有效性规则
本帖最后由 todaynew 于 2010-10-22 16:47 编辑

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

[attach]43891[/attach]

[attach]43892[/attach]

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


作者: li08hua    时间: 2010-10-22 22:26
todaynew 又出新东东了,大家赶紧下,谢谢!
作者: tmtony    时间: 2010-10-22 23:53
又有新作, 收藏!!
作者: michael100    时间: 2010-10-23 08:51
学习了
作者: ycxchen    时间: 2010-10-23 10:41
谢谢分享,学习!
作者: xuwenning    时间: 2010-10-25 09:06
谢谢分享
已经收藏了
作者: girder    时间: 2010-10-26 15:58
好东西,学习一下。。。。。
作者: huxinhua    时间: 2012-1-10 15:13
谢谢分享,学习!
作者: nncchh    时间: 2015-5-25 20:20
谢谢
作者: 灰太郎    时间: 2018-1-1 18:51
1111111111111111111
作者: 灰太郎    时间: 2018-1-1 18:51
333333333333333333333333




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