Ireport制作交叉表.docx

上传人:b****5 文档编号:11639969 上传时间:2023-03-29 格式:DOCX 页数:14 大小:1.55MB
下载 相关 举报
Ireport制作交叉表.docx_第1页
第1页 / 共14页
Ireport制作交叉表.docx_第2页
第2页 / 共14页
Ireport制作交叉表.docx_第3页
第3页 / 共14页
Ireport制作交叉表.docx_第4页
第4页 / 共14页
Ireport制作交叉表.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Ireport制作交叉表.docx

《Ireport制作交叉表.docx》由会员分享,可在线阅读,更多相关《Ireport制作交叉表.docx(14页珍藏版)》请在冰豆网上搜索。

Ireport制作交叉表.docx

Ireport制作交叉表

Ireport制作交叉表

1、 打开iReport软件,【文件】——>【New】,选择一个报表模版,(以选择第一个模版为例),然后选择“OpenthisTemplate”,

如图1.1所示。

进入下一个页面,填写文件名,选择文件的存放位置,单击【下一步】,再点击【完成】。

图1.1

2、 从【组件面板】中拖拽“StaticText”控件到“PageHeader”部分,双击该控件来填写报表的题目——“学生成绩单“(可从“窗口”菜单中

打开【组件面板】)。

3、 单击图3.1中的图标,打开如图3.2所示的窗体,在【Reportquery】如图3.2光标所在的位置填写相应的SQL语句:

select

s.student_name_,s.subject_name_assubject,s.grade_fromstudents。

图3.1

图3.2

4、 如图4.1所示,注意要勾选上“AutomaticallyRetrieveFields”属性,使系统自动读取select出来的字段,如图蓝色底儿的区域。

之后点

击【OK】按钮(注意:

不是窗体的“ד)。

同时,这些字段也会在【ReportInspector】窗体的“Fields”区域显示,如图4.2所示。

 

图4.1

图4.2

5、 从“组件面板”中拖拽“Crosstab”控件(如图5.1)到“Summary”部分(注意交叉表必须放置在这个区域),会出现如图5.2所示的窗体,单击“下一步”,如图5.3所示,在“RowGroup1”处从查询出来的字段中选择“student_name_”作为每行的行标题,之后,单击“下一步”,如图5.4所示的,从“ColumnGroup1”处选择“subject”作为每列的列标题,再单击“下一步”,如图5.5,在“Date”处选择“grade_”作为表中的数据,如图5.6,对每个学生的成绩进行求和,如图5.7所,显示每个学生的总成绩,不显示每科的总成绩。

图5.1

图5.2

 

图5.3

图5.4

图5.5

图5.6

图5.7

6.可通过切换“Mainreport”和“Crosstab1”来编辑报表,在“Crosstab1”中可通过使用“Ctrl+鼠标滚轮“来实现图的缩放,以便于编辑。

图6.1

7.做完报表后,通过图7.1红色框中的“编译“按钮编译文件后,再点击绿色框中的“预览“按钮就可以观看做的报表的效果了!

弹出对话框随便输入个值即可。

图7.1

8.最终的效果图,如图8.1所示

图8.1

9.可以根据个人的需要在“Crosstab1”页面更改蓝色底儿框部分的列头的名称。

实现交叉表列排序:

 

1、 报表中通常我们的sql语句是这样写的:

selects.student_name_,s.grade_,s.subject_name_fromstudents,编译,运行之后,我们会看到如图1的结果,(注意:

列头的排序结果是数学、英语、语文)

图1

但是若想让列头的排列顺序是:

语文、数学、英语,这要怎么办呢?

可能有的人要说了,在sql语句中加个orderby语句就ok了,嗯,的确哦,在数据库中是可以的,或许碰巧在您的报表中也会就能得到您想要的结果,但那仅仅是“碰巧”哦,这里我要向大家介绍的是另一种实现您的报表列头排序的方法!

2、 在您的sql语句中动一下“手脚”,写成这样的:

selects.student_name_,s.grade_,

caseto_char(s.subject_name_)

whento_char('语文')thento_char('A语文')

whento_char('数学')thento_char('B数学')

whento_char('英语')thento_char('C英语')

endassubject

fromstudentsorderbys.subject_name_ desc,运行的结果如图2所示:

图2

3、 因为报表中显示了多余的字段,所以呢,我们就要想办法把多出来的字符串去掉!

如图3点击Crosstab1到交叉报表的页面,单击显示列标题的文本框,在窗体的右侧就会显示该文本框的属性

图3

4、 如图4所示:

在属性窗口中找到TextFieldExpression属性,点击最右边的“…”按钮

图4

5、 如图5.1所示,在黑色光标处写函数substring,结果如图5.2所示,然后单击【确定】

图5.1

图5.2

6、 编译,预览的效果如图6所示

图6

至此,就实现了我们想要的功能了!

还有一个小问题,不知您看出来没有啦,就是:

我添加了A、B、C后,报表就按照指定的顺序出来了,其实呢,iReport是按照首个字符的ASCII码来排序的呢。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1