组态王第八讲 报表系统18


第八讲 报表系统

- 63 -

第八讲 报表系统

在本课程您将:
? 掌握实时报表的创建过程 ? 掌握历史报表的创建、查询过程

第一节 概述
数据报表的用途
数据报表是反应生产过程中的过程数据、运行状态等,并对数据进行记录、统计的一种重要工具,是 生产过程必不可少的一个重要环节。它既能反应系统实时的生产情况又能对长期的生产过程数据进行统 计、分析,使管理人员能够掌握和分析生产过程情况。
组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。组态王为工程人员 提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。既可以制作实时报表又可以 制作历史报表。另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。

第二节 实时数据报表
创建实时数据报表
实时数据报表创建过程如下: 1、 新建一画面,名称为:实时数据报表画面。 2、 选择工具箱中的 工具,在画面上输入文字:实时数据报表。 3、选择工具箱中的 工具,在画面上绘制一实时数据报表窗口,如图 8-1 所示:

北京亚控科技发展有限公司

第八讲 报表系统

- 64 -

图 8-1 “报表工具箱”会自动显示出来,双击窗口的灰色部分,弹出“报表设计”对话框,如图 8-2 所示:

图 8-2 对话框设置如下: 报表控件名:Report1 行数:6 列数:10 4、输入静态文字:选中 A1 到 J1 的单元格区域,执行“报表工具箱”中的“合并单元格”命令并在 合并完成的单元格中输入:实时数据报表演示。 利用同样方法输入其它静态文字,如图 8-3 所示:
图 8-3 5、插入动态变量:合并 B2 和 C2 单元格,并在合并完成的单元格中输入:=\\本站点\$日期。(变量
北京亚控科技发展有限公司

第八讲 报表系统

- 65 -

的输入可以利用“报表工具箱”中的“插入变量”按钮实现)

利用同样方法输入其它动态变量,如图 8-4 所示:

图 8-4
注:如果变量名前没有添加“=”符号的话此变量被当作静态文字来处理。
6、单击“文件”菜单中的“全部存”命令,保存您所作的设置。 7、单击“文件”菜单中的“切换到 VIEW”命令,进入运行系统。系统默认运行的画面可能不是您刚 刚编辑完成的“实时数据报表画面”,您可以通过运行界面中“画面”菜单中的“打开”命令将其打开后 方可运行,如图 8-5 所示:

图 8-5
实时数据报表打印
一、实时数据报表自动打印设置过程如下: 1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表自动打印。 2、 在按钮的弹起事件中输入如下命令语言,如图 8-6 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 66 -

图 8-6 3、 单击“确认”按钮关闭命令语言编辑框。当系统处于运行状态时,单击此按钮数据报表将被打印
出来。
二、实时数据报表手动打印设置过程如下: 1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表手动打印。 2、在按钮的弹起事件中输入如下命令语言,如图 8-7 所示:

图 8-7 3、 单击“确认”按钮关闭命令语言编辑框。 4、 当系统处于运行状态时,单击此按钮,弹出“打印属性”对话框,如图 8-8 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 67 -

图 8-8 5、在“打印属性”对话框中做相应设置后,单击“确定”按钮,数据报表将被打印出来。
三、实时数据报表页面设置过程如下: 1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表页面设置。 2、在按钮的弹起事件中输入如下命令语言,如图 8-9 所示:

图 8-9 3、单击“确认”按钮关闭命令语言编辑框。 4、当系统处于运行状态时,单击此按钮,弹出“页面设置”对话框,如图 8-10 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 68 -

图 8-10 5、 在“页面设置”对话框中对报表的页面属性做相应设置后,单击“确定”按钮,完成报表的页面
设置。
四、实时数据报表打印预览设置过程如下: 1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表打印预览。 2、在按钮的弹起事件中输入如下命令语言,如图 8-11 所示:

图 8-11 3、单击“确认”按钮关闭命令语言编辑框。 4、 当系统处于运行状态时,页面设置完毕后,单击此按钮,系统会自动隐藏组态王的开发系统和运
行系统窗口,并进入打印预览窗口,如图 8-12 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 69 -

图 8-12 6、 在打印预览窗口中使用打印预览查看打印后的效果,单击“关闭”按钮结束预览,系统自动恢复
组态王的开发系统和运行系统窗口。
实时数据报表的存储
实现以当前时间作为文件名将实时数据报表保存到指定文件夹下的操作过程如下: 1、在当前工程路径下建立一文件夹:实时数据文件夹。 2、在“实时数据报表画面”中添加一按钮,按钮文本为:保存实时数据报表。 3、在按钮的弹起事件中输入如下命令语言,如图 8-13 所示:

命令语言如下所示:

图 8-13
北京亚控科技发展有限公司

第八讲 报表系统

- 70 -

string filename; filename=InfoAppDir()+"\实时数据文件夹\"+
StrFromReal( \\本站点\$年, 0, "f" )+ StrFromReal( \\本站点\$月, 0, "f" )+ StrFromReal( \\本站点\$日, 0, "f" )+ StrFromReal( \\本站点\$时, 0, "f" )+ StrFromReal(\\本站点\$分, 0, "f" )+ StrFromReal( \\本站点\$秒, 0, "f" )+".rtl";

ReportSaveAs("Report1",filename);

5、 单击“确认”按钮关闭命令语言编辑框。当系统处于运行状态时,单击此按钮数据报表将以当前 时间作为文件名保存实时数据报表。

实时数据报表的查询
利用系统提供的命令语言可将实时数据报表以当前时间作为文件名保存在指定的文件夹中,对于已经 保存到文件夹中的报表文件如何在组态王中进行查询呢?下面将介绍一下实时数据报表的查询过程:
利用组态王提供的下拉式组合框与一报表窗口控件可以实现上述功能。 1、在工程浏览器窗口的数据词典中定义一个内存字符串变量:
变量名:报表查询变量 变量类型:内存字符串 初始值:空 2、新建一画面,名称为:实时数据报表查询画面。 3、选择工具箱中的 工具,在画面上输入文字:实时数据报表查询。 4、选择工具箱中的 工具,在画面上绘制一实时数据报表窗口,控件名称为:Report2。 5、选择工具箱中的 工具,在画面上插入一“下拉式组合框”控件,控件属性设置如图 8-14 所示:

图 8-14 6、 在画面中单击鼠标右键,在画面属性的命令语言中输入如下命令语言,如图 8-15 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 71 -

图 8-15
命令语言如下所示: string filename; filename=InfoAppDir()+"\实时数据文件夹\*.rtl"; listClear("List1"); ListLoadFileName( "List1",filename);
上述命令语言的作用是将已经保存到“当前组态王工程路径下实时数据文件夹”中的实时报表文件 名称在下拉式组合框中显示出来。 7、在画面中添加一按钮,按钮文本为:实时数据报表查询。 8、在按钮的弹起事件中输入如下命令语言,如图 8-16 所示:

命令语言如下所示:

图 8-16
北京亚控科技发展有限公司

第八讲 报表系统

- 72 -

string filename1;

string filename2; filename1=InfoAppDir()+"\实时数据文件夹\"+\\本站点\报表查询变量;

ReportLoad("Report2",filename1); filename2=InfoAppDir()+"\实时数据文件夹\*.rtl";

listClear("List1");

ListLoadFileName( "List1", filename2); 上述命令语言的作用是将下拉式组合框中选中的报表文件的数据显示在 Report2 报表窗口中,其中 \\本站点\报表查询变量保存了下拉式组合框中选中的报表文件名。 9、设置完毕后单击“文件”菜单中的“全部存”命令,保存您所作的设置。 10、单击“文件”菜单中的“切换到 VIEW”命令,运行此画面。当您单击下拉式组合框控件时保存 在指定路径下的报表文件全部显示出来,选择任一报表文件名,单击“实时数据报表查询”按钮后此报表

文件中的数据会在报表窗口中显示出来,从而达到了实时数据报表查询的目的。

第三节 历史数据报表

创建历史数据报表
历史数据报表创建过程如下: 1、新建一画面,名称为:历史数据报表画面。 2、选择工具箱中的 工具,在画面上输入文字:历史数据报表。 3、选择工具箱中的 工具,在画面上绘制一历史数据报表窗口,控件名称为:Report5,并设计表 格,如图 8-17 所示:

图 8-17
北京亚控科技发展有限公司

第八讲 报表系统

- 73 -

历史数据报表查询

利用组态王提供的 ReportSetHistData2 函数可从组态王记录的历史库中按指定的起始时间和时间间隔 查询指定变量的数据,设置过程如下:
1、在画面中添加一按钮,按钮文本为:历史数据报表查询。 2、在按钮的弹起事件中输入如下命令语言,如图 8-18 所示:

图 8-18
3、设置完毕后单击“文件”菜单中的“全部存”命令,保存您所作的设置。 4、单击“文件”菜单中的“切换到 VIEW”命令,运行此画面。单击“历史数据报表查询”按钮,弹 出报表历史查询对话框,如图 8-19 所示:

图 8-19 报表历史查询对话框分三个属性页:报表属性页、时间属性页、变量属性页。 报表属性页:在报表属性页中您可以设置报表查询的显示格式,此属性页设置如图 8-19 所示。
北京亚控科技发展有限公司

第八讲 报表系统

- 74 -

时间属性页:在时间属性页中您可以设置查询的起止时间以及查询的时间间隔,如图 8-20 所示:

图 8-20 变量属性页:在变量属性页中您可以选择欲查询历史数据的变量,如图 8-21 所示:

图 8-21 5、设置完毕后单击“确定”按钮,原料油液位变量的历史数据即可显示在历史数据报表控件中,从 而达到了历史数据查询的目的,如图 8-22 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 75 -

图 8-22
历史数据报表的其它应用
一、1 分钟数据报表演示
利用报表窗口工具结合组态王提供的命令语言可实现一个 1 分钟的数据报表,设置过程如下: 1、新建一画面,名称为:1 分钟数据报表画面。 2、选择工具箱中的 工具,在画面上输入文字:1 分钟数据报表。 3、选择工具箱中的 工具,在画面上绘制一报表窗口(64 行 5 列),控件名称为:Report6,并设 计表格,如图 8-23 所示:

图 8-23 4、在工程浏览器窗口左侧“工程目录显示区”中选择“命令语言”中的“数据改变命令语言”选项, 在右侧“目录内容显示区”中双击“新建”图标,在弹出的编辑框中输入如下脚本语言,如图 8-24 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 76 -

图 8-24
命令语言如下所示:当系统变量\\本站点\$秒 变化时,执行该脚本程序 long row; row=\\本站点\$秒+4; ReportSetCellString("Report6", 2, 2, \\本站点\$日期); ReportSetCellString("Report6", row, 1, \\本站点\$时间); ReportSetCellValue("Report6", row, 2, \\本站点\原料油液位); ReportSetCellValue("Report6", row, 3, \\本站点\催化剂液位); ReportSetCellValue("Report6", row, 4, \\本站点\成品油液位); If(row= =4) ReportSetCellString2("Report6", 5, 1, 63, 5, ""); 上述命令语言的作用是将\\本站点\原料油液位、\\本站点\催化剂液位 和\\本站点\成品油液位
变量每秒钟的数据自动写入报表控件中。
5、设置完毕后单击“文件”菜单中的“全部存”命令,保存您所作的设置。 6、单击“文件”菜单中的“切换到 VIEW”命令,运行此画面。系统自动将数据写入报表控件中,如 图 8-25 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 77 -

图 8-25
二、1 分钟数据查询报表演示(间隔时间为 2 秒钟)
利用组态王历史数据查询函数 ReportSetHistData() 实现定时自动查询历史数据,并获取 1 分钟数 据的平均值,设置过程如下:
1、新建一画面,名称为:1 分钟数据查询报表画面。 2、选择工具箱中的 工具,在画面上输入文字:1 分钟数据查询报表。 3、选择工具箱中的 工具,在画面上绘制一报表窗口(33 行 5 列),控件名称为:Report7,并设 计表格,在如图 8-26 所示:
图 8-26 4、在报表窗口的 b33 单元格中填写“=Average('b3:b32')”,c33 单元格中填写“=Average('c3:c32')”,
d33 单元格中填写“=Average('d3:d32')”,如图 8-27 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 78 -

图 8-27
5、在工程浏览器窗口左侧“工程目录显示区”中选择“命令语言”中的“数据改变命令语言”选项, 在右侧“目录内容显示区”中双击“新建”图标,在弹出的编辑框中输入如下脚本语言,如图 8-28 所示:

图 8-28
北京亚控科技发展有限公司

第八讲 报表系统

- 79 -

数据改变命令语言如下所示:当系统变量\\本站点\$分 变化时,执行该脚本程序

long StartTime;

StartTime=HTConvertTime(\\本站点\$年,\\本站点\$月,\\本站点\$日,\\本站点\$时,\\本站点\$分,0);

StartTime=StartTime-60;

ReportSetTime("Report7", StartTime, 2, "a3:a32");

ReportSetHistData("Report7", "\\本站点\原料油液位", StartTime, 2,"b3:b32"); ReportSetHistData("Report7", "\\本站点\催化剂液位", StartTime, 2,"c3:c32");

ReportSetHistData("Report7", "\\本站点\成品油液位", StartTime, 2,"d3:d32"); 上述命令语言的作用是查询\\本站点\原料油液位、\\本站点\催化剂液位 和\\本站点\成品油液位 变

量当前时间前一分钟的数据,查询间隔为 2 秒,把时间显示在报表 Report7 的 a3 到 a32 单元格中,数

据的查询结果分别显示在报表 Report7 的 b3 到 b32、c3 到 c32 和 d3 到 d32 单元格中。

5、设置完毕后单击“文件”菜单中的“全部存”命令,保存您所作的设置。 6、单击“文件”菜单中的“切换到 VIEW”命令,运行此画面。系统自动将数据写入报表控件中,如
图 8-29 所示:

图 8-29 7、 在 1 分钟数据查询报表中,\\本站点\原料油液位、\\本站点\催化剂液位 和\\本站点\成品油液位 变
量的查询结果的平均值分别显示在 b33、c33 和 d33 单元格中,如图 8-30 所示:
北京亚控科技发展有限公司

第八讲 报表系统

- 80 -

图 8-30

课后复习
1、 制作一个实时报表。 2、 制作一个日报表。 3、 制作一个历史数据查询。 4、 练习报表的保存、打印、查询等功能。
北京亚控科技发展有限公司


相关文档

报表系统-组态王报表系统
组态王软件详细教程 第七讲 报表系统
组态王教程第八讲
相与设计报表系统-组态王报表系统
组态王中自动报表系统的实现
组态王整点报表代码
基于组态王的Excel工业报表系统
组态王教学-报表与打印
组态王报表导入导出
031第八讲 组态王与数据库连接
电脑版