回 帖 发 新 帖 刷新版面

主题:[原创]我的学习笔记—— 中级报表制作2——动态列

隔了好久又开始写学习笔记了,工作忙的差点荒废了做笔记,呵呵,自我检讨一下先吧。
这次的中级报表制作做什么呢,想了一下,还是做个不是很复杂的,举个用列名称控制显示列的例子好了。
我想要什么效果呢,就是数据库里存了好多的数据列,但是我不想都显示出来,只想要我想看的固定的那几个列,所以我就想要访问报表的时候,他把可以选看的列名称都显示给我,我可以自己选几个想看的列。
其实操作起来也不是很难的。老规矩,放个图先:

[img]http://finesoftware.k13.23dns.net/picFforum/vv.png[/img]

这个图里面,有六个列可以选,课程号,课程,年纪,姓名等等,但是我只想看课程号,名字和他们对应的性别,这里我就多选这三个列,得到的效果见下图喽~

[img]http://finesoftware.k13.23dns.net/picFforum/ww.png[/img]

废话不多说了,简单介绍下我的制作方法吧~
首先 把数据导入到Finereport里来。直接select * from StScore.
StScore这个表里有六个列: Class No, Name, Sex, Course, Grade, Student No.
然后新建一张空白的自由报表。 定义一
个参数,名称为Para。类型选
为复选框,如图:

[img]http://finesoftware.k13.23dns.net/picFforum/xx.png[/img]

然后我们来定义一个报表数据字典,选择定义|自定义,然后写入6个列名,分别为复选框中的可选项,确定。设置如下图:

[img]http://finesoftware.k13.23dns.net/picFforum/yy.png[/img]

把A3单元格设置为从上到下扩展。
在B2单元格中,写入一个公式:=split($para, ",")。意思就是啊在B1单元格中写入了一个函数split ( )。该函数在此处可以获取从参数当中传入的列名作为值,并将每一个值写一个单元格。 
然后我们鼠标选中B2单元格,将他设置为从左到右扩展。 
在A3单元格中写入如下公式:=ds1.select(#0),这个公式的意义就是取得ds1数据源当中的所有行号。就是呢ds1当中有多少行数据,那么这个公式返回该结果的行号,1,2,3…… 
然后在B3单元格中写入如下公式:=ds1.column(b2),这个公式的意义就是要获取B2单元格所指定的列的列内容。其返回记录的排列顺序是按照A3当中所获取的行号进行排列的。 
预览就有我们要的效果喽~搞定!嘿嘿~
中级的报表相对以前写的初级确实是多了很多步骤呢,也不知道自己描述的清不清楚~还有问题的同学欢迎提问喽~恩恩~

回复列表 (共2个回复)

沙发

顶你的report

板凳


[em5]图终于出来了[em10]

我来回复

您尚未登录,请登录后再回复。点此登录或注册