设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1299|回复: 4
打印 上一主题 下一主题

[窗体] 为什么不能在一个控件的更新前事件中锁定另外一个控件?

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-3 15:01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如现在有两个非绑定控件 组合框0 和 文本框1,在组合框0的更新前事件加入以下代码

Private Sub 组合0_BeforeUpdate(Cancel As Integer)
   
    Me.文本1.Locked = True

End Sub


然后在 组合框0 中输入任意字符,就会出现运行时错误'2166'  

请问哪位知道为什么这样呢,是微软的限制设定,还是vba的bug?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-9-3 16:52:49 | 只看该作者
非绑定的文本框是不能锁定的, 可以使用失效的办法来处理
Private Sub 组合0_BeforeUpdate(Cancel As Integer)
   
    Me.文本1.Enabled = False

End Sub
3#
 楼主| 发表于 2007-9-3 17:42:09 | 只看该作者
好像和是否绑定没有关系,如果将代码放在更新后事件就能正常锁定了,为什么会有这么奇怪的结果呢?

我的那个控件不能用失效来处理,所以现在只能定义一个全局布尔变量X,在组合框0的更新前事件中,如果输入内容符合一个很复杂有几百行代码的条件,组合框就允许更新,X=true;不符合条件,组合框不允许更新,X=false。

然后在组合框0的更新后事件中,根据变量值来判断是否锁定(如果不用全局变量的话,那些条件就得重新在更新后事件中再粘贴一次进行判断)。这么简单的一个功能要通过这么复杂的方法来实现,郁闷啊
4#
发表于 2007-9-3 22:12:39 | 只看该作者
既然要在组合框更新前就锁定,不如在窗体加载时锁定,然后根据组合框更新后的值,判断打开还是不打开文本框的锁定。
5#
发表于 2007-9-3 22:29:03 | 只看该作者
也可以在属性里,将text0=locked
然后,根据组合框的值来判断开或是关
Private Sub Combo2_AfterUpdate()
If Me.Combo2 = 1 Then
Me.Text0.Locked = False
Else
Me.Text0.Locked = True
End If
End Sub

为什么不能在一个控件的更新前事件中锁定另外一个控件?
主要原因是:当有数据处于编辑状态,不能锁定控件。

[ 本帖最后由 dddddd 于 2007-9-3 22:31 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 15:22 , Processed in 0.099245 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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