Office中国论坛/Access中国论坛

标题: 连续子窗体合计实例 [打印本页]

作者: todaynew    时间: 2009-1-2 11:12
标题: 连续子窗体合计实例
  我们知道为了在窗体或者报表计算和输出合计,通常是在页眉页脚处用文本框来处理。对于用惯了Excel的同志们来说,总觉得这样的一种处理有些许别扭。因此,就有一小撮和我一样的初学者,希望能在连续的子窗体中直接把合计数列于表的尾部。近日,对这个问题胡乱琢磨了一番,发现还真可以在Access中实现。便也就写了一个小实例,或许能给同志们一个参考。

要点:

1、将明细查询和合计查询做成一个联合查询,其中合计的记录中人员ID编号为“99999”,保证该条记录在排序后处于末尾;


2、联合查询在子窗体中无法编辑数据,因此可以看成对子窗体的锁定。为了使数据能够修改,便通过解锁按钮更换数据源。


[attach]34205[/attach]



  [attach]34199[/attach]

1、输入发放日期
[attach]34200[/attach]


2、点击导入名单按钮。
[attach]34201[/attach]



3、点击解锁按钮。
[attach]34202[/attach]

  

4、录入数据。
[attach]34203[/attach]

  

5、点击锁定按钮。
[attach]34204[/attach]

  
VB代码如下:

Private Sub 导入_Click()
Dim sql As String
DoCmd.SetWarnings no
If Not (IsNull(Me.发放日期)) Then
   sql = "INSERT INTO 工资表 ( 人员ID, 日期 ) "
   sql = sql + "SELECT 人员表.人员ID, Format(Forms!主窗体!发放日期,'yy-mm-dd') AS 日期 "
   sql = sql + "FROM 人员表 "
   sql = sql + "WHERE 人员表.部门ID=[Forms]![主窗体]![部门ID];"
   DoCmd.RunSQL sql
   Me.子窗体.Form.Requery
End If
End Sub


Private Sub 发放日期_LostFocus()
Me.子窗体.Form.Requery
Me.工资总额.Requery
End Sub

Private Sub 解锁_Click()
Me.子窗体.Form.RecordSource = "工资查询"
End Sub

Private Sub 锁定_Click()
Me.子窗体.Form.RecordSource = "联合查询"
Me.工资总额.Requery
End Sub




[ 本帖最后由 todaynew 于 2009-1-2 11:48 编辑 ]
作者: Henry D. Sy    时间: 2009-1-2 11:13
谢谢分享
作者: todaynew    时间: 2009-1-2 11:34
标题: 回复 2# 的帖子
谢谢版主鼓励![:50]
作者: Grant    时间: 2009-1-2 14:26
谢谢分享 [:24]
作者: todaynew    时间: 2009-1-2 15:47
原帖由 Grant 于 2009-1-2 14:26 发表
谢谢分享 [:24]


谢谢版主鼓励。[:50]
作者: WDLRCZT    时间: 2009-1-2 16:31
支持一下
作者: todaynew    时间: 2009-1-2 17:00
原帖由 WDLRCZT 于 2009-1-2 16:31 发表
支持一下


谢谢老师支持。[:24]
作者: njy6000    时间: 2009-1-2 20:00
讲述的很清楚,首先这种精神就可嘉.
作者: zhaofangyuan    时间: 2009-1-3 10:45
谢谢分享!
作者: todaynew    时间: 2009-1-3 11:41
quote]原帖由 njy6000 于 2009-1-2 20:00 发表
讲述的很清楚,首先这种精神就可嘉. [/quote]

原帖由 zhaofangyuan 于 2009-1-3 10:45 发表
谢谢分享!



谢谢同志们!

[:50]
作者: tmtony    时间: 2009-1-3 11:46
很不错的贴子,谢谢分享!!
作者: tmtony    时间: 2009-1-3 11:47
加分!
作者: todaynew    时间: 2009-1-3 13:33
原帖由 tmtony 于 2009-1-3 11:46 发表
很不错的贴子,谢谢分享!!

原帖由 cuxun 于 2009-1-3 12:02 发表
支持,谢谢分享


谢谢管理员和版主鼓励与支持![:24]
作者: ycxchen    时间: 2009-1-3 16:48
下载学习!
作者: ycxchen    时间: 2009-1-3 16:55
学习了,但对类似sql = sql + "FROM 人员表 "的用法不明法,这样用法有什么好处呢?
作者: todaynew    时间: 2009-1-3 17:12
原帖由 ycxchen 于 2009-1-3 16:55 发表
学习了,但对类似sql = sql + "FROM 人员表 "的用法不明法,这样用法有什么好处呢?


主要原因是sql语句比较长的时候,这样写,比较容易在VB设计窗口查看,具有较好的可读性,也便于修改。

可能把+号换成&号更好一些。

短一些的SQl语句我习惯直接这样写:

docmd.runsql "select * from 表 where 准则"

[ 本帖最后由 todaynew 于 2009-1-3 17:16 编辑 ]
作者: ycxchen    时间: 2009-1-3 17:41
多谢todaynew!
作者: todaynew    时间: 2009-1-3 17:58
原帖由 ycxchen 于 2009-1-3 17:41 发表
多谢todaynew!


不必客气,相互学习,共同提高!

[:24]
作者: mzwhmy    时间: 2009-1-3 18:00
谢谢分享
作者: fnsmydyang    时间: 2009-1-3 18:50
顶一下[:17]
作者: df    时间: 2009-1-3 22:55
谢谢分享
作者: friendship    时间: 2009-1-5 02:58
思路真的很不错! 敢于创新!
作者: todaynew    时间: 2009-1-5 07:10
原帖由 friendship 于 2009-1-5 02:58 发表
思路真的很不错! 敢于创新!


[:24] 谢谢。
作者: wang1950317    时间: 2009-1-5 10:25
学习![:50] [:50]
作者: todaynew    时间: 2009-1-5 11:13
原帖由 wang1950317 于 2009-1-5 10:25 发表
学习![:50] [:50]



谢谢金牌同志,并向你学习。

[:24]
作者: sheandme0    时间: 2009-1-5 19:50
学习下
作者: sheandme0    时间: 2009-1-5 20:30
http://www.accessoft.com/
作者: win0922    时间: 2009-1-6 00:22
学习中
作者: wang1950317    时间: 2009-3-21 21:46
学习!
作者: luhao    时间: 2009-3-21 22:25
多谢分享
作者: yanwei82123300    时间: 2009-7-30 10:09
讲述的很清楚,首先这种精神就可嘉.
作者: huxinhua    时间: 2012-1-10 15:23
谢谢分享
作者: h150085001    时间: 2012-1-10 15:33
哈哈,历害
作者: wgh3g    时间: 2012-1-10 15:53
学习
作者: qczvba    时间: 2012-1-10 16:18
谢谢老大,很需要。谢了。{:soso_e100:}
作者: xyhecho2002    时间: 2012-1-21 09:19
谢谢!
作者: zpy2    时间: 2015-3-19 06:25
谢谢分享




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