Office中国论坛/Access中国论坛

标题: 新手上路,请教高手!解决一个我的老问题。 [打印本页]

作者: 程研    时间: 2010-9-4 17:30
标题: 新手上路,请教高手!解决一个我的老问题。
如何实现窗体上显示的字段值(计算结果)能自动写入该表的字段中?见附件。谢谢![attach]43300[/attach]
作者: wang1950317    时间: 2010-9-4 19:02
可将[合计]绑定数据源合计,然后在科目更新后用代码计算结果赋值给合计。
作者: todaynew    时间: 2010-9-4 19:12
如何实现窗体上显示的字段值(计算结果)能自动写入该表的字段中?见附件。谢谢!
程研 发表于 2010-9-4 17:30

两种处理方法:
1、绑定到字段“合计”上,可以这样处理:
Private Sub Form_Load()
Dim ctls As Controls
Dim ctl As Control
Set ctls = Me.Controls
For Each ctl In ctls
    If ctl.Name = "数学" Or ctl.Name = "物理" Or ctl.Name = "化学" Then
        ctl.AfterUpdate = "=AllAfterUpdate()"
    End If
Next
End Sub

Function AllAfterUpdate()
Me.合计.Value = Me.数学.Value + Me.物理.Value + Me.化学.Value
End Function

2、非绑定的,可以这样处理:
Private Sub Form_Load()
Dim ctls As Controls
Dim ctl As Control
Set ctls = Me.Controls
For Each ctl In ctls
    If ctl.Name = "数学" Or ctl.Name = "物理" Or ctl.Name = "化学" Then
        ctl.AfterUpdate = "=AllAfterUpdate()"
    End If
Next
End Sub

Function AllAfterUpdate()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE 表1 SET 表1.合计 = [数学]+[物理]+[化学];"
End Function

实例采用的为第2种
[attach]43303[/attach]

作者: 程研    时间: 2010-9-5 09:50
回复 todaynew 的帖子


   
作者: 程研    时间: 2010-9-5 09:56
回复 todaynew 的帖子


    谢谢版主!您回复的附件我打开后看到了表1"合计"有了窗体上对应“合计”数据,但添加数据后还是不行,另外请教您的两种办法,是以何方式实现?是按钮还是窗体事件?请指教.
作者: todaynew    时间: 2010-9-5 10:21
本帖最后由 todaynew 于 2010-9-5 10:24 编辑
回复


    谢谢版主!您回复的附件我打开后看到了表1"合计"有了窗体上对应“合计”数据,但添加数据后 ...
程研 发表于 2010-9-5 09:56

差一条刷新语句,现在可以了。
[attach]43314[/attach]

在【数学】、【物理】、【化学】的更新后事件中实现的。
不过这三个控件的更新后事件,又是在窗体加载事件中写入的。采用这个方法可以简化很多控件情况下,编写重复代码问题。

作者: wang1950317    时间: 2010-9-5 10:46
又学了一招,原先我都是使用笨法子,在各个计算参数的文本框更新后事件中加计算公式,对我等对代码很菜的来说,好理解些。但远没有版主的代码简洁。
作者: 程研    时间: 2010-9-5 12:24
回复 todaynew 的帖子
有老版主了!刚才有反复研究了您的回复。发现问题在最后添加的信息不能写入“合计”表字段。请分析如何调试代码。程研谢谢您!

   
作者: 程研    时间: 2010-9-5 12:57
回复 todaynew 的帖子
OK了!谢谢版主指教!

   
作者: 程研    时间: 2010-9-10 09:43
回复 todaynew 的帖子


    感谢指教!




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