水晶报表字段重复的显示问题

xiezhiqu 2009-08-12 04:43:50


请问各位,这样的报表怎么做出来的。报表中的数据都是提取出来的,在这张图中,每一行的数据模块名称都是一样的,
怎么样才能让模块名称这个字段只显示一次,且位置位于该模块所有课程所围成的框的中间呢,且不能影响每一行的高度。

之前,我把模块名称那一列拖小至只显示一个字的宽度,又设置了若重复则抑制显示,但出来的效果不行,第一条数据会占据很大的高度。就像这样:



怎么样才能做出第一张图这种效果呢?大家帮帮忙,谢 谢 了
...全文
580 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿泰 2009-08-15
  • 打赏
  • 举报
回复
这个是因为你的len({字段}/2) 可能不是整数,结果导致space出错了
可以改成len({字段}\2)
xiezhiqu 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 babyt 的回复:]

可以这样做一下试试,设置组名称的格式,“显示为”:
space(count({表.组名称字段},{表.组名称字段})*4-len({表.组名称字段}))/2+ {表.组名称字段}

把行高度转换为纵向高度 减去 组名高度,再补上1/2这个高估的空格
这个系数4需要自己调整一下,
[/Quote]

“冒昧问一下,设置组名称的格式,显示为:”,这个右键单击组名字段后,没有找到有个“显示为”的选项啊,是在哪里设置呢?,我在cssod中的公式里写不行,在打上若重复则抑制显示的勾后,显示字符串中的公式写都会报错,说“字符串副本数太大或不是整数”?

这个要怎么解决呢?
阿泰 2009-08-14
  • 打赏
  • 举报
回复
1:横向显示的时候垂直居中还有可能,可以参考
http://www.cnblogs.com/babyt/archive/2008/01/08/1031133.html

2:纵向的时候,虽然可以组页眉的使用“延伸到后续节”,但他肯定是从每组第一行的位置开始的,所以也实现不了垂直居中。
实质上这种情况,模块名称的高度可能已经影响了课程名称的高度了。
比如课程只有2个,但是模块名称有10个字的高度,那么就有8个空行的位置
如果可以接受这种的话,

可以这样做一下试试,设置组名称的格式,“显示为”:
space(count({表.组名称字段},{表.组名称字段})*4-len({表.组名称字段}))/2+ {表.组名称字段}

把行高度转换为纵向高度 减去 组名高度,再补上1/2这个高估的空格
这个系数4需要自己调整一下,
xiezhiqu 2009-08-14
  • 打赏
  • 举报
回复
怎么我用的右键里面没有格式化该字段,只有一个设置对象格式,弹出的界面上没有显示为或是显示为字符串,



请指教
阿泰 2009-08-14
  • 打赏
  • 举报
回复
右键,格式化该字段,在弹出来的界面上有的,显示为或者是显示为字串


cssod 是什么。。
xiao_fan85 2009-08-13
  • 打赏
  • 举报
回复
不过这个公式写起来麻烦些,楼主可以试试
xiao_fan85 2009-08-13
  • 打赏
  • 举报
回复
你公共基础课那一列都是叫这个名字么?或者还有其他的名字,是分组字段吧?
有个思路是这样的,你不用一行全部显示出来,可以一行显示一个字。
写一个数组公式,分组字段的每个字作为数组的一个元素,然后判断这个分组里有多少项,如果大于数组索引,那么就一行显示一个字显示下来,如果小于数组索引,那么把数组全部显示,数据项少的直接空行补上去
zhaozhijun0207 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xiezhiqu 的回复:]
最少的记录是1条。如果没有数据的话,该模块下的内容是不会被提取出来的。
[/Quote]问下阿泰吧,我那个问题也是在阿泰的提示下搞定的.
zhaozhijun0207 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xiezhiqu 的回复:]
我用的是push模式,是用ADO.NET填充数据源的。
想找自己以前发过的帖子,不是在“我的社区”里面的“我发布的帖子”中找就有吗?
[/Quote]
@_@ 发帖过多,找不到了
我那个方法只适合解决pull模式.
push的,我就不懂了.
xiezhiqu 2009-08-13
  • 打赏
  • 举报
回复
回zhaozhijun0207:
最少的记录是1条。如果没有数据的话,该模块下的内容是不会被提取出来的。
xiezhiqu 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhaozhijun0207 的回复:]
引用 楼主 楼 xiezhiqu 的回复:
报表中的数据都是提取出来的
你是用pull模式么?
我之前也遇到过你这样的问题,我已经解决了.

我想问下,图片中的"课程名称"最少最少会有多少行数据?
找了半天,没找到自己以前发布的帖子
[/Quote]

我用的是push模式,是用ADO.NET填充数据源的。

想找自己以前发过的帖子,不是在“我的社区”里面的“我发布的帖子”中找就有吗?
zhaozhijun0207 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 楼主 楼 xiezhiqu 的回复:]
报表中的数据都是提取出来的[/Quote]
你是用pull模式么?
我之前也遇到过你这样的问题,我已经解决了.

我想问下,图片中的"课程名称"最少最少会有多少行数据?
找了半天,没找到自己以前发布的帖子
xiezhiqu 2009-08-13
  • 打赏
  • 举报
回复
今天又试了一下,按模块名称分组,然后详细资料节里面没有放置模块名称,在组页眉中合适的位置放置组名(即模块名称这个字段),再设置宽度至只能显示一个字,再在节专家中选择该组,把“延伸至后续节”打上勾。之后运行就成了这样子了。



怎么样才能让它根据课程数量,让它在竖直方向上居中呢?
llsen 2009-08-13
  • 打赏
  • 举报
回复
模块名称 课程名称 学时
99999 3
AAAAAA 22222 13
00000 11
BBBBBB 333试试 32

记得之前看过阿泰的一篇文章,实现类似与上面的效果,
就是重复的时候居中

思路大概是 计数统计重复条数,然后将AAAAA(重复值)放到大概1/2重复条数的位置

找不到在哪里看过了,

刚在阿泰博客园里面看到有交叉表里面有竖着放合并的单元格
但是你这个不是交叉表

占位等阿泰了
xiezhiqu 2009-08-12
  • 打赏
  • 举报
回复
谢 谢 llsen 了
llsen 2009-08-12
  • 打赏
  • 举报
回复
看了下,他也是只是合并,但是没有竖向


这个问题好像没法实现,因为你的竖向他的高度确实设置的有那么高,你没法限制啊
抑制重复显示 只是不显示数据,但是你第一个格式就是那样,如果不抑制显示,肯定每条都那么高

楼主可以换其他方式实现
比如grid,或者纯粹html,还好些,格式容易控制些。
llsen 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiezhiqu 的回复:]
如果不抑制显示重复,那就不必要使它竖着排列,那结果就是下面这张图的样子了。



我想的是让模块名称这个字段可以竖着排列,且不会影响课程名称及学时的高度。
[/Quote]
这样貌似不行,之前阿泰写的文章也是可以合并,但是下面的是空行
不过好像有类似这种帖子
等等找找阿泰之前的帖子看看
你也去博客园阿泰的空间看看
xiezhiqu 2009-08-12
  • 打赏
  • 举报
回复
如果不抑制显示重复,那就不必要使它竖着排列,那结果就是下面这张图的样子了。



我想的是让模块名称这个字段可以竖着排列,且不会影响课程名称及学时的高度。
llsen 2009-08-12
  • 打赏
  • 举报
回复
因为你将那个模块名称字段托了那么宽,他自己本来就占那么多

你这个也不是重复显示问题
你就一个就这么宽

重复显示是你把这个托长点,足够显示,可能出来

模块名称 课程名称 学时
AAAAAA 99999 3
22222 13
BBBBBB 333试试 32
llsen 2009-08-12
  • 打赏
  • 举报
回复
你这个报表,即使不抑制显示重复,也会出现2楼的问题
对吧
加载更多回复(6)

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧