Office中国论坛/Access中国论坛

标题: 通过按钮更改的控件值为什么不能触发更新事件? [打印本页]

作者: 十年磨一剑    时间: 2012-2-26 15:40
标题: 通过按钮更改的控件值为什么不能触发更新事件?
哪个大侠有空帮忙解决一个问题:通过按钮更改的控件值为什么不能触发更新事件?该如何解决?
Private Sub CountPlus_Click()
Dim C As Integer
C = Val(Me.数量)
Me.数量 = C - 1
If Me.数量.Value < 0 Then
MsgBox "不良数量不可小于0!" & Chr(13) & "至少等于0!", vbOKOnly, "计数错误!"
Me.数量 = 0
End If
End Sub
Private Sub CountReduce_Click()
Dim C As Integer
C = Val(Me.数量)
Me.数量 = C + 1
End Sub

这是一个通过两个按钮(一个增加,一个减小)控制“数量”这个控件的值,可是点击“增加”或“减小”按钮后,控件值更改了,却没有触发更新事件,这是为什么?该如何解决?
作者: 十年磨一剑    时间: 2012-2-26 15:42
补充更新事件代码(“占比率”与“数量”为子窗体控件,“抽检数量”为主窗体控件):
Private Sub 数量_afterUpdate()
Me.占比率 = Val(Me.数量) / Val([Forms]![IQCMaterial]![抽检数量])
End Sub
作者: Henry D. Sy    时间: 2012-2-26 16:29
对,本来就不会触发!
作者: 十年磨一剑    时间: 2012-2-26 16:34
那要怎么解决呢?帮主大人
作者: fnsmydyang    时间: 2012-2-26 17:27
上传附件吧!
作者: JosephTan    时间: 2012-2-26 17:51
方法不是没有,我的方法是用sendkey把控件上的内容截取然后粘帖,^x然后^v然后再发一个enter
作者: t小宝    时间: 2012-2-26 20:13
本帖最后由 t小宝 于 2012-2-26 20:13 编辑

通过代码更改控件值确实不能触发更新事件!
解决办法是:用代码更改控件值后执行更新事件过程代码。
Private Sub CountPlus_Click()
Dim C As Integer
C = Val(Me.数量)
Me.数量 = C - 1
If Me.数量.Value < 0 Then
MsgBox "不良数量不可小于0!" & Chr(13) & "至少等于0!", vbOKOnly, "计数错误!"
Me.数量 = 0
End If
数量_afterUpdate
End Sub
Private Sub CountReduce_Click()
Dim C As Integer
C = Val(Me.数量)
Me.数量 = C + 1
数量_afterUpdate
End Sub


作者: t小宝    时间: 2012-2-27 09:46
7楼没有触发更新事件,但是一种常用的解决方法。
想在代码中触发可以更改文本框的Text属性而不是Value,要先让文本框获得焦点,这样:
Me.数量.SetFocus
Me.数量.Text=0

6楼也是这个原理。
作者: Henry D. Sy    时间: 2012-2-27 10:06
你想在按钮事件后,触发更新事件!
为何不把更新事件中的代码直接写到按钮事件的代码后面!
作者: 十年磨一剑    时间: 2012-2-29 10:27
感谢各位的指点,Henry版主真是一语惊醒梦中人呀,这是就最简单直接的解决方法,也许我们学习ACCESS就要用这种精神。小宝版主与Joseph的办法也可以,感谢你们的新方法。




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