Office中国论坛/Access中国论坛

标题: 已解决,组页眉如何根据主体内容设置 [打印本页]

作者: fswxs    时间: 2007-12-29 14:26
标题: 已解决,组页眉如何根据主体内容设置
解决俄u需要做这样的报表:

组页眉          AA                   0
——————————————————
主   体           A1                   1
                     A2                  -1

如果是上面的情况,就显示组页眉;如果A1=0 AND A2=0,则不显示组页眉。
如何才能实现?
请高手指教!
急!!!

[ 本帖最后由 fswxs 于 2008-1-4 12:57 编辑 ]
作者: tmtony    时间: 2007-12-29 19:34
有难度, 这个还真没有试过.
作者: fswxs    时间: 2007-12-29 19:37
谢谢版主关注!
用报表的retreat事件行吗?但我不会
作者: tmtony    时间: 2007-12-29 19:43
我来试一试
作者: gdfsslec    时间: 2007-12-29 19:46
页眉FORMAT 事件在前,主体FORMAT事件在后,难!
作者: tmtony    时间: 2007-12-29 19:48
原帖由 gdfsslec 于 2007-12-29 19:46 发表
页眉FORMAT 事件在前,主体FORMAT事件在后,难!


有道理!
作者: hi-wzj    时间: 2007-12-30 10:17
放个例子上来看看?
作者: fswxs    时间: 2007-12-31 07:55
原帖由 hi-wzj 于 2007-12-30 10:17 发表
放个例子上来看看?

已上传例子,请版主帮忙!谢谢!
作者: hi-wzj    时间: 2008-1-1 15:02
不知道您的意思是否这样:
Private Sub 组页眉0_Format(Cancel As Integer, FormatCount As Integer)
aa = DSum("abs([应收款])", "表1", "[部门]='" & Me.部门 & "'")
If aa = 0 Then
   Me.组页眉0.Visible = False
Else
   Me.组页眉0.Visible = True
End If
End Sub
作者: fswxs    时间: 2008-1-1 16:27
首先感谢版主热心回复!
就结果而言是这个意思。但是我这里只是一个例子(原例上传会很大,而且一会半会也难搞懂),实际上不是这么简单。
报表的数据来源是多层复杂查询结果(里面也有总计查询),表头也有10多项。我是通过判断页眉和主体每行其中几项的绝对值的和为零与否(和您一样的办法,只不过是判断每行的多项同时为零),来确定该行是否显示,因此在这里只能通过报表的数据源想办法。就这个报表而言,如果退回到表或在查询里设置用于判断的项,比较麻烦。
就在报表里解决有办法吗?
作者: fswxs    时间: 2008-1-3 15:05
顶一下
作者: t小宝    时间: 2008-1-3 15:23
可以报表的打开事件里判断数据源
作者: fswxs    时间: 2008-1-3 17:42
原帖由 t小宝 于 2008-1-3 15:23 发表
可以报表的打开事件里判断数据源

如何判断每一组的情况啊
作者: andymark    时间: 2008-1-3 20:14
直接以此为数据源
SELECT 表1.序号, 表1.部门, 表1.客户, 表1.应收款
FROM 表1
GROUP BY 表1.序号, 表1.部门, 表1.客户, 表1.应收款
HAVING (((表1.应收款)<>0))
作者: fswxs    时间: 2008-1-3 21:27
谢谢andymark斑竹给出的新思路,但是仍然不能解决我的问题。
我的问题似乎只能在报表中解决才行。
我的判断条件是,页眉中的10个文本框(主体对应文本框的SUM)同时为零就不显示;主体的5个文本框同时为零则该行不显示。
这样就会有时候是主体有内容,页眉有内容;有时候是主体无内容,页眉也有内容。
是个不可能完成的任务?
作者: t小宝    时间: 2008-1-3 23:22
原帖由 fswxs 于 2008-1-3 17:42 发表

如何判断每一组的情况啊

在报表上能反映的数据都可以从数据源判断,方法是用域合计函数或记录集.

不过还有一个办法:
设置组页眉上的文本框:上边距=0,高度=0.001,可以缩小=是,可以扩大=是.组页眉的高度=0.001

[ 本帖最后由 t小宝 于 2008-1-4 00:05 编辑 ]
作者: t小宝    时间: 2008-1-4 00:07
在例子上按上面的方法做了一下,可以实现(不用代码,但要改动文本框的控件源和上面说的一些属性):
[attach]27626[/attach]

[ 本帖最后由 t小宝 于 2008-1-4 00:09 编辑 ]
作者: fswxs    时间: 2008-1-4 08:39
谢谢t小宝先!我的做法本来就是和你说的一样,否则做不出的。
但是你的修改和我的修改2一样啊,没有了部门。
继续发挥你的钻研精神,攻克它
作者: fswxs    时间: 2008-1-4 08:43
原帖由 cuxun 于 2008-1-3 22:28 发表
下面这句话只是针对主体节每页的最后一条记录而言,显不显示就看这条记录,跟其它数据没关系的
主体的5个文本框同时为零则该行不显示。

不是的。因为是在主体的FORMAT事件中判断的,而且用的是t 小宝说的方法,所以可以达到“隐藏”符合条件的主体行。
作者: fswxs    时间: 2008-1-4 13:02
感谢各位热心回复!终于在各位启发下找到个办法,其实很简单,可能各位可能早就想到了,只是被我问糊涂了
在页眉加个不显示的文本框,对主体的绝对值求和,用于做判断条件就可以了,附件在一楼。
再次感谢各位,我会想念你们的
作者: t小宝    时间: 2008-1-4 14:43
原帖由 fswxs 于 2008-1-4 08:39 发表
谢谢t小宝先!我的做法本来就是和你说的一样,否则做不出的。
但是你的修改和我的修改2一样啊,没有了部门。
继续发挥你的钻研精神,攻克它


我的做法是不需要代码的,你把你的修改2去掉代码看看...

再修改一下可以显示部门的,还是不用代码的!
[attach]27639[/attach]
作者: fswxs    时间: 2008-1-4 16:31
就这个例子而言,你的办法是对的




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