组态王报表(课件)_图文


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

8.1 实时数据报表 8.2 历史数据报表 8.3 历史数据报表的其它应用

8.1 实时数据报表
1、创建实时数据报表 、
新建一画面,名称为:实时数据报表画面。 新建一画面,名称为:实时数据报表画面。 在画面上输入文字:实时数据报表。 在画面上输入文字:实时数据报表。 在工具箱中选择“报表窗口” 在工具箱中选择“报表窗口”。

“双击窗口的灰色部分,弹出“报表设计”对话框,对话框设置如下: 双击窗口的灰色部分,弹出“报表设计”对话框,对话框设置如下: 双击窗口的灰色部分

报表工具箱 符号的话此变量被当作静态文字来处理。 注:如果变量名前没有添加“=”符号的话此变量被当作静态文字来处理。 如果变量名前没有添加“ 符号的话此变量被当作静态文字来处理

设置选中的单元格格式

输入静态文字: 输入静态文字:

单击“文件”菜单中的“全部存”命令,切换到 单击“文件”菜单中的“全部存”命令,切换到VIEW” 命令,进入运行系统。 命令,进入运行系统。

2、报表函数 、 报表在运行系统中、单元格中数据的计算、 报表在运行系统中、单元格中数据的计算、报表的操作等都是 通过组态王提供的一整套报表函数实现的。 通过组态王提供的一整套报表函数实现的。 报表函数分为报表内部函数、报表单元格操作函数、 报表函数分为报表内部函数、报表单元格操作函数、报表存取 函数、报表历史数据查询函数、统计函数、报表打印函数等。 函数、报表历史数据查询函数、统计函数、报表打印函数等。
1)实时打印 ) ReportPrint2 此函数为报表专用函数。 此函数为报表专用函数。将指定的报表输出到打印配置中指定的打印机上 打印,语法使用格式如下: 打印,语法使用格式如下: ReportPrint2(ReportName) 自动打印:ReportPrint2(“ReportName”) 自动打印 或ReportPrint2(“ReportName”,1) , 手动打印: 手动打印 ReportPrint2(“ReportName”,0),弹出“ 打印属性” 对话框。 , ,弹出“ 打印属性” 对话框。

2)保存( ReportSaveAs ) )保存( 此函数为报表专用函数。 此函数为报表专用函数。将指定报表按照所给的文件名存储到指定目 录下,语法格式使用如下: 录下,语法格式使用如下: ReportSaveAs(ReportName, FileName) 参数说明:ReportName:报表名称; :报表名称; 参数说明 FileName:存储路径和文件名称 。 :

ReportSaveAs("Report1", "D:\教学 组态王 我的工程 生产车间 报 教学\组态王 我的工程2\生产车间 教学 组态王\我的工程 生产车间\报 表.rtl");
保存为rtl、 、 保存为 、xls、csv 格式

3)页面设置ReportPageSetup )页面设置 此函数为在运行状态下对报表进行页面设置函数
ReprotPageSetup(String szRptName); 参数说明: 参数说明:szRptName:要进行页面设置报表的名称 。 : 例如:设置“实时数据报表” 例如:设置“实时数据报表” ReportPageSetup(“实时数据库表”)。 实时数据库表” 实时数据库表 。

4)打印预览设置ReportPrintSetup )打印预览设置 此函数对指定的报表进行打印预览并且可输出到打印配置中 指定的打印机上进行打印。 指定的打印机上进行打印。
ReportPrintSetup(szRptName); 参数说明: 参数说明:szRptName:要打印预览的报表名称 。 : 例如:打印预览“实时数据报表” 例如:打印预览“实时数据报表”: ReportPrintSetup(“实时数据报表”)。 实时数据报表” 。 实时数据报表

4)实时数据报表的查询 )
利用系统提供的命令语言可将实时数据报表以当前时间作为 文件名保存在指定的文件夹中, 文件名保存在指定的文件夹中,对于已经保存到文件夹中的 报表文件如何在组态王中进行查询呢? 报表文件如何在组态王中进行查询呢?利用组态王提供的下 拉式组合框与一报表窗口控件可以实现上述功能。 拉式组合框与一报表窗口控件可以实现上述功能。 查询过程: 查询过程:
在工程浏览器窗口的数据词典中定义一个内存字符串变量: 在工程浏览器窗口的数据词典中定义一个内存字符串变量: 变量名: 变量名:报表查询变量 变量类型: 变量类型:内存字符串 初始值: 初始值:空 在画面上输入文字:实时数据报表查询。 在画面上输入文字:实时数据报表查询。 绘制一实时数据报表窗口,控件名称为: 绘制一实时数据报表窗口,控件名称为:Report2。 。

“下拉式组合框”控件,控 下拉式组合框”控件, 下拉式组合框 件属性设置如图所示: 件属性设置如图所示:

在画面属性的命令语言 中输入如下命令语言: 中输入如下命令语言: string filename; filename=InfoAppDir()+"\实时数据文件夹 实时数据文件夹\*.rtl"; 实时数据文件夹 listClear("List1"); ListLoadFileName( "List1",filename); 上述命令语言的作用是将已经保存到“ 上述命令语言的作用是将已经保存到“当前组态王工程路 径下实时数据文件夹” 径下实时数据文件夹”中的实时报表文件名称在下拉式组 合框中显示出来。 合框中显示出来。

在画面中添加一按钮,按钮文本为:报表查询。 在画面中添加一按钮,按钮文本为:报表查询。 在按钮的弹起事件中输入如下命令语言: 在按钮的弹起事件中输入如下命令语言: string filename1; string filename2; filename1=InfoAppDir()+"\实时数据文件夹 实时数据文件夹\"+\\本站点 报表查 本站点\报表查 实时数据文件夹 本站点 询变量; 询变量 ReportLoad("Report2",filename1); filename2=InfoAppDir()+"\实时数据文件夹 实时数据文件夹\*.rtl"; 实时数据文件夹 listClear("List1"); ListLoadFileName( "List1", filename2); 上述命令语言的作用是将下拉式组合框中选中的报表文件的数 据显示在Report2 报表窗口中,其中 本站点 报表查询变量保 报表窗口中,其中\\本站点 本站点\报表查询变量保 据显示在 存了下拉式组合框中选中的报表文件名。 存了下拉式组合框中选中的报表文件名。

ReportLoad
此函数为报表专用函数。将指定路径下的报表读到当前报 此函数为报表专用函数。 表中来,语法格式使用如下: 表中来,语法格式使用如下: ReportLoad(ReportName, FileName) 参数说明: 参数说明:ReportName:报表名称 : FileName:报表存储路径和文件名称 :

8.2 历史数据报表
历史报表记录了以往的生产记录数据,对用户来说是非常 历史报表记录了以往的生产记录数据, 重要的。 重要的。
创建历史数据报表 ? 新建一画面,名称为:历史数据报表画面。 新建一画面,名称为:历史数据报表画面。 ? 在画面上输入文字:历史数据报表。 在画面上输入文字:历史数据报表。 ? 在画面上绘制一历史数据报表窗口,控件名称为:历史报表,并设计表 在画面上绘制一历史数据报表窗口,控件名称为:历史报表, 所示: 格,如图 所示:

在画面中添加一按钮,按钮文本为:历史数据报表查询。 在画面中添加一按钮,按钮文本为:历史数据报表查询。 在按钮的弹起事件中输入如下命令语言: 在按钮的弹起事件中输入如下命令语言: ReportSetHistData2(1,1); ReportSetHistData2 此函数为报表专用函数。查询历史数据,系统会自动弹 此函数为报表专用函数。查询历史数据, 出历史数据查询对话框。 出历史数据查询对话框。 语法使用格式如下: 语法使用格式如下: ReportSetHistData2(StartRow,StartCol); 参数说明: 参数说明: StartRow:查询的数据在报表中填充的起始行数。 :查询的数据在报表中填充的起始行数。 StartCol:查询的数据在报表中填充的起始列数。 :查询的数据在报表中填充的起始列数。

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

选择“命令语言”中的“数据改变命令语言”选项, 选择“命令语言”中的“数据改变命令语言”选项,在编 辑框中输入如下脚本语言, 辑框中输入如下脚本语言,
long row; row=\\本站点 秒+4; 本站点\$秒 本站点 ReportSetCellString("一分钟数据报表 2, 2,\\本站点 日期 一分钟数据报表", 本站点\$日期 一分钟数据报表 本站点 日期); ReportSetCellString("一分钟数据报表 row, 1, \\本站点 时间 一分钟数据报表", 本站点\$时间 一分钟数据报表 本站点 时间); ReportSetCellValue("一分钟数据报表 row, 2, \\本站点 原料油液位 一分钟数据报表", 本站点\原料油液位 一分钟数据报表 本站点 原料油液位1); ReportSetCellValue("一分钟数据报表 row, 3, \\本站点 催化剂液位 一分钟数据报表", 本站点\催化剂液位 一分钟数据报表 本站点 催化剂液位1); ReportSetCellValue("一分钟数据报表 row, 4, \\本站点 成品油液位 一分钟数据报表", 本站点\成品油液位 一分钟数据报表 本站点 成品油液位1); If(row==63) ReportSetCellString2("一分钟数据报表 4, 1, 63, 5, ""); 一分钟数据报表", 一分钟数据报表

当系统变量\\本站点 秒变化时 执行该脚本程序, 当系统变量 本站点\$秒变化时,执行该脚本程序,将变 本站点 秒变化时, 量每秒钟的数据自动写入报表控件中。 量每秒钟的数据自动写入报表控件中。

ReportSetCellString 将指定报表的指定单元格设置为给定字符串。 将指定报表的指定单元格设置为给定字符串。 语法格式使用如下: 语法格式使用如下: ReportSetCellString(ReportName, Row, Col, Value)
参数说明: 参数说明:ReportName:报表名称 ; Row:要设置数值的报表的行号; 要设置数值的报表的行号; Col:要设置数值的报表的列号; 要设置数值的报表的列号; Value:要设置的文本 。

ReportSetCellString2 将指定报表的指定单元格区域设置为给定字符串。 将指定报表的指定单元格区域设置为给定字符串。 语法格式使用如下: 语法格式使用如下: ReportSetCellString2(ReportName, StartRow, StartCol, EndRow, EndCol, Value)
参数说明: 参数说明: ReportName:报表名称; :报表名称; StartRow:要设置数值的报表的开始行号; :要设置数值的报表的开始行号; StartCol:要设置数值的报表的开始列号; :要设置数值的报表的开始列号; StartRow:要设置数值的报表的开始行号; :要设置数值的报表的开始行号; StartCol:要设置数值的报表的开始列号; :要设置数值的报表的开始列号; Value:要设置的文本 。 :

二、1 分钟数据查询报表
定时自动查询历史数据,并获取 分钟数据的平均值。 定时自动查询历史数据,并获取1 分钟数据的平均值。 设置过程如下: 设置过程如下: 在画面上输入文字: 分钟数据查询报表。 在画面上输入文字:1 分钟数据查询报表。 绘制一报表窗口( ),控件名称为 一分钟查询, 控件名称为: 绘制一报表窗口(33 行5 列),控件名称为:一分钟查询, 并设计表格如下, 并设计表格如下,

在报表窗口的b33 单元格中填写“=Average(‘b3:b32’)”; 单元格中填写“ 在报表窗口的 ; c33 单元格中填写“=Average(‘c3:c32’)”; 单元格中填写“ ; d33 单元格中填写“=Average(‘d3:d32’)”。 单元格中填写“ 。 在“数据改变命令语言”选项输入如下脚本语言: 数据改变命令语言”选项输入如下脚本语言:
long StartTime; StartTime=HTConvertTime(\\本站点 年,\\本站点 月,\\本站点 日,\\本站点 时, 本站点\$年 本站点 本站点\$月 本站点 本站点\$日 本站点 本站点\$时 本站点 \\本站点 分,0); 本站点\$分 本站点 StartTime=StartTime-60; ReportSetTime("一分钟查询 StartTime, 2, "a3:a32"); 一分钟查询", 一分钟查询 ReportSetHistData("一分钟查询 "\\本站点 原料油液位 一分钟查询", 本站点 原料油液位1", StartTime, 2,"b3:b32"); 本站点\原料油液位 一分钟查询 ReportSetHistData("一分钟查询 "\\本站点 催化剂液位 一分钟查询", 本站点 催化剂液位1", StartTime, 2,"c3:c32"); 本站点\催化剂液位 一分钟查询 ReportSetHistData("一分钟查询 "\\本站点 成品油液位 一分钟查询", 本站点 成品油液位1", StartTime, 2,"d3:d32"); 本站点\成品油液位 一分钟查询

上述命令语言的作用是查询变量当前时间前一分钟的数据, 上述命令语言的作用是查询变量当前时间前一分钟的数据,查 询间隔为2 把时间显示在报表“一分钟查询” 询间隔为 秒,把时间显示在报表“一分钟查询”的a3 到a32 单元格中,数据的查询结果分别显示在报表“一分钟查询” 单元格中,数据的查询结果分别显示在报表“一分钟查询”的 b3 到b32、c3 到c32和d3 到d32 单元格中。 单元格中。 、 和

ReportSetHistData
按照用户给定的参数查询历史数据。 按照用户给定的参数查询历史数据。 语法格式使用如下: 语法格式使用如下: ReportSetHistData(ReportName, TagName, StartTime, SepTime, szContent) ; 参数说明: 参数说明:ReportName:要填写查询数据结果的报表 : 名称; 名称; TagName:所要查询的变量名称; :所要查询的变量名称; StartTime:数据查询的开始时间; :数据查询的开始时间; SepTime:查询的数据的时间间隔,单位 :查询的数据的时间间隔, 为秒; 为秒; szContent:查询结果填充的单元格范围 。 :

HTConvertTime 此函数将指定的时间格式( 此函数将指定的时间格式(年,月,日,时,分,秒)转换为 以秒为单位的长整型数,转换的时间基准是UTC(格林尼 以秒为单位的长整型数,转换的时间基准是 格林尼 治)1970年1月1日00:00:00。 年 月 日 。 语法使用格式 HTConvertTime(Year,Month,Day,Hour,Minute,Second)
参数描述 Year: 年,整型,此值必须介于 整型,此值必须介于1970和2019之间; 之间; : 和 之间 Month:月,整型,此值必须介于 和12之间; 整型,此值必须介于1和 之间 之间; : Day: 日,整型,此值必须介于 和31之间; 整型,此值必须介于1和 之间 之间; : Hour: 小时,整型,此值必须介于 和23之间; 之间; : 小时,整型,此值必须介于0和 之间 Minute: 分钟,整型,此值必须介于 和59之间; 之间; : 分钟,整型,此值必须介于0和 之间 Second: 秒,整型,此值必须介于 和59之间。 整型,此值必须介于0和 之间 之间。 : 调用此函数将用年、 秒表示的时间转换成自1970年1 注:调用此函数将用年、月、日、时、分、秒表示的时间转换成自 年 起到该时刻所经过的秒数。 月1日00:00:00即UCT起到该时刻所经过的秒数。 日 即 起到该时刻所经过的秒数 例如: 语句HTConvertTime(1970,1,1,9,0,0)执行后返回长整型数为 执行后返回长整型数为3600。 例如: 语句 执行后返回长整型数为 。


相关文档

组态王整点报表代码
组态王教学-报表与打印
组态王_课件
组态王报表
报表系统-组态王报表系统
组态王报表()解析
组态王报表导入导出
组态王课件 (4)
组态王课件(7)
基于组态王的Excel工业报表系统
电脑版