组态王教学-报表与打印


报表与打印

常见问题解答

北京亚控科技发展有限公司
2009年8月

“报表与打印”常见问题解答

目 录
1. 报表 ........................................................................................................................ 1 1.1 组态王软件自带的报表窗口的行列设置限制是多少? .......................... 1 1.2 组态王软件自带的报表窗口的控件名称命名有什么特殊要求吗? ...... 1 1.3 组态王软件自带的报表窗口控件,如何设定单元格数据显示的小数位 数? ............................................................................................................................. 1 1.4 在组态王运行系统中,如何锁定报表的行和列? .................................. 1 1.5 在组态王运行系统中能否对报表单元格中的数据进行修改? .............. 1 1.6 在组态王运行系统中如何清除报表单元格中的数据? .......................... 2 1.7 在组态王运行系统中,如何实现将组态王报表文件保存为以日期命名 的文件? ..................................................................................................................... 2 1.8 组态王的历史记录属性中能够设置的定时记录最短时间是 1 分钟,如 何实现 1 秒钟的定时记录功能? ............................................................................. 2 1.9 在组态王中如何删除指定目录下的单个报表文件或多个报表文件? .... 2 1.10 如何打开组态王报表文件(*.rtl 格式的文件)?能否使用其他应用程序 打开? ......................................................................................................................... 3 1.11 能否对组态王报表控件中的行宽和列宽进行锁定? ............................ 3 1.12 在安装组态王的计算机 A 中能否读取另外一台安装组态王计算机 B 上面的报表文件? ..................................................................................................... 3 1.13 在组态王中实现以时分秒为文件名且每分钟保存一报表文件功能, 当 保存整点的报表时,指定文件夹内的文件名比实际时间少一个小时? ............. 3 1.14 在组态王报表控件中对合并的单元格应如何计算它的行号和列号? 3 1.15 在组态王画面上如何得到指定变量在指定时间内的最大值、 最小值和 平均值? ..................................................................................................................... 3 1.16 使用组态王提供的 kingreport.xls 文件查询组态王历史数据, 选择查询 的工程后提示加载工程失败,为什么? ................................................................. 4 1.17 求报表中不为 0 的单元格数据的平均值? ............................................ 4 1.18 为什么我使用 ReportLoad()函数无法打开我使用 ReportSaveas()函数 保存的报表? ............................................................................................................. 5 1.19 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最
北京亚控科技发展有限公司 i

“报表与打印”常见问题解答

大最小值)? ............................................................................................................. 5 1.20 组态王的报表能否直接保存成 excel 格式的文件,这样可以直接通过 excel 程序打开?........................................................................................................ 6 1.21 我使用组态王的报表控件制作工程报表,采用的 ReportSetCellValue() 来对报表控件进行后台填值操作,为什么当我显示报表时却是空白的? ......... 6 1.22 在组态王运行系统中如何实现往报表单元格中插入数据? .................. 6 1.23 组态王中扩展名为.rtl 的文件是什么格式的文件?如何打开此类型的 文件? ......................................................................................................................... 6 1.24 为什么在命令语言中使用报表函数却不执行? .................................... 7 2. 打印 ........................................................................................................................ 7 2.1 组态王软件对普通商业打印机的选择有什么要求? .............................. 7 2.2 组态王软件如何打印运行过程中的画面? .............................................. 7 2.3 组态王软件的表格窗口的数据是如何进行打印输出的? ...................... 7 2.4 为什么用 ReportPrint2()函数不能实现自动打印报表? .......................... 7 2.5 组态王软件的控件的数据是如何进行打印输出的? .............................. 8 2.6 在组态王中进行打印预览时,为什么不能进行打印方向的设置,如何 解决? ......................................................................................................................... 8

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

ii

“报表与打印”常见问题解答

1. 报表
1.1 组态王软件自带的报表窗口的行列设置限制是多少? 组态王 6.51 及其以前版本,报表窗口的行列设置限制为 2000 行 52 列,对新版的组 态王软件,报表窗口的行列设置限制有了改善,可以定义到 20000 行 128 列。 1.2 组态王软件自带的报表窗口的控件名称命名有什么特殊要求吗? 组态王报表窗口的控件名称要求一定不能与组态王的数据词典的变量的名称相同, 如果相同,会导致报表有关的函数不能正常运行。 1.3 组态王软件自带的报表窗口控件,如何设定单元格数据显示的小数位数? 用户使用鼠标选中组态王报表窗口控件的需要设定的单元格后,在现报表工具箱浮 动菜单上选择设定单元格类型,在弹出的对话框中选择数字属性页的数值,然后根据需 要设定小数位数即可。 1.4 在组态王运行系统中,如何锁定报表的行和列? 在组态王运行系统中,选择要锁定行列交叉处的单元格,同时按下{Ctrl}+{L} 键,可以锁定选定单元格上侧的所有行和左侧的所有列,被锁定区域边界以蓝色线条为 界线。锁定的行和列不随滚动条滚动。例如锁定报表中的第一行和第一列,当报表的滚 动条向右移动时,报表第一列不动;当报表的滚动条向下滚时,报表的第一行不动。 只锁定行,可以选择最左侧的单元格执行锁定。 只锁定列,可以选择最上边的单元格执行锁定。 锁定行列中的单元格不能被编辑,如果需要对锁定的单元格进行编辑,必须先对锁 定部分进行解锁操作,在表格中单击任意单元格,同时按下{Ctrl}+{U}键,可以解 除锁定。 1.5 在组态王运行系统中能否对报表单元格中的数据进行修改? 可以。在组态王开发系统中选中报表中的某个单元格或是用鼠标拖动选中多个单元 格后,单击鼠标右键,在快捷菜单中将“只读”属性前面的对勾去掉,则所选单元格在 运行系统中就可以编辑了。

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

1

“报表与打印”常见问题解答

1.6 在组态王运行系统中如何清除报表单元格中的数据? 在 组 态 王 运 行 系 统 中 清 除 报 表 单 元 格 中 的 数 据 是 通 过 ReportSetCellString/ReportSetCellString2 函数来实现的,调用格式: ReportSetCellString("实时数据报表", 1, 1, ""); ReportSetCellString2("实时数据报表", 1, 1, 1, 3, ""); 1.7 在组态王运行系统中,如何实现将组态王报表文件保存为以日期命名的文件? 实现过程如下: 1)在当前工程路径下建立一文件夹:日报; 2)在组态王中新建一画面,在画面中添加一按钮,在按钮的弹起时命令语言中输入 如下脚本语言: string filename; filename=InfoAppDir()+" 日 报 \"+StrFromReal( \\ 本 站 点 \$ 年 , "f" )+"y"+StrFromReal( $月, 0, "f" )+"m"+StrFromReal( $日, 0, "f" )+".rtl"; ReportSaveAs("Report1",filename); 1.8 组态王的历史记录属性中能够设置的定时记录最短时间是 1 分钟,如何实现 1 秒钟 的定时记录功能? 在变量定义对话框中可以定义变量定时记录的时间,此时间是以分为单位的,最小 是 1 分钟,如果想实现 1 秒钟的定时记录的话,可以使用组态王提供的数据库访问函数 SQLInsert()并通过 ODBC 的方式将数据定时记录到外部数据库中。其中 SQLInsert() 函数的调用格式: 数据改变命令语言中输入如下命令语言(变量域:\\本站点$秒): SQLInsert( DeviceID, "kingtable", "Bind1" ); 建议在存储数据量不大的情况下使用上述方法实现定时记录功能。如果存储的数据 量非常大的时候,建议使用变量变化时记录。 1.9 在组态王中如何删除指定目录下的单个报表文件或多个报表文件? 使用组态王提供的 FileDelete 函数来实现,具体调用格式如下: 删除单个文件:FileDelete("D:\报表目录\DATA.RTL"); 删除多个文件:FileDelete("D:\报表目录\*.RTL");
北京亚控科技发展有限公司 2

0,

“报表与打印”常见问题解答

1.10 如何打开组态王报表文件(*.rtl 格式的文件)?能否使用其他应用程序打开? 组态王的报表文件是组态王自定义的文件格式,所以无法使用其他应用程序打开, 只能将文件 load 到报表控件中进行查看,但您可以将报表保存成*.xls 类型的文件,在 excel 应用程序中打开。 1.11 能否对组态王报表控件中的行宽和列宽进行锁定? 可以。 1)在组态王运行系统中选中表格; 2)按 Ctrl+f,单元格的宽度和高度就被锁定了,即不能被修改; 3)按 Ctrl+j,解除锁定。 1.12 在安装组态王的计算机 A 中能否读取另外一台安装组态王计算机 B 上面的报表文 件? 可以。 使用 reportload 函数实现,命令语言如下所示: string aa; aa="\\172.16.1.91\本地磁盘 (e)\实时报警\报表.rtl"; ReportLoad("实时数据报表",aa); 1.13 在组态王中实现以时分秒为文件名且每分钟保存一报表文件功能,当保存整点的报 表时,指定文件夹内的文件名比实际时间少一个小时? 原因是当分已经变成 0 的那一时刻, 时还没有发生变化的缘故造成的, 解决方法是: 在事件命令语言中用秒==59 或秒==1 为条件,在发生时执行报表保存命令。 1.14 在组态王报表控件中对合并的单元格应如何计算它的行号和列号? 当上下两个单元格合并时,合并的单元格的行号是合并前上面单元格的行号; 当左右两个单元格合并时,合并的单元格的列号是合并前左边单元格的列号; 1.15 在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值? 组态王 6.53 2008 年版本新增加了求历史库中某段时间的最大值、 最小值、 平均值的 功能,使用此函数可以在组态王画面上得到指定变量在一段时间内的最大值、最小值和
北京亚控科技发展有限公司 3

“报表与打印”常见问题解答

平均值。函数使用方法如下: RealResult=GetHistMaxData(TagName,StartTime,EndTime); //获取某段时间的最大值 RealResult=GetHistMinData(TagName,StartTime,EndTime); //获取某段时间的最小值 RealResult=GetHistAveData(TagName,StartTime,EndTime); //获取某段时间的平均值 参数描述: TagName:所要查询的变量的名称,类型为字符串型,即带引号。 StartTime:数据查询的开始时间,该时间是通过组态王 HTConvertTime 函数转化的 以 1969 年 12 月 31 日 16:00:00 为基准的长整型数,所以用户在使用本函数之前,应 先将查询起始时间转换为长整型数值。 EndTime:数据查询的结束时间,类型同 StartTime。 返回值:返回一个实数值。 调用方法如下: long time1; long time2; time1=HTConvertTime(2008,10,17,17,07,35); time2=HTConvertTime(2008,10,17,17,09,35); \\本站点\最大值=GetHistMaxData("\\本站点\仿真变量",time1,time2); \\本站点\最小值=GetHistMinData("\\本站点\仿真变量",time1,time2); \\本站点\平均值=GetHistAveData("\\本站点\仿真变量",time1,time2); 需要更新文件实现。 1.16 使用组态王提供的 kingreport.xls 文件查询组态王历史数据,选择查询的工程后提 示加载工程失败,为什么? 最可能的原因没有将组态王工程运行起来,将工程运行起来后再执行 kingreport.xls 文件即可。 1.17 求报表中不为 0 的单元格数据的平均值? 命令语言如下: long row; long jishu;
北京亚控科技发展有限公司 4

“报表与打印”常见问题解答

long shuzhi; long leijizhi; row=1; while (row<6) { shuzhi=ReportGetCellValue("Report0",row, 1); if(shuzhi>0) { leijizhi=leijizhi+shuzhi; jishu=jishu+1; } \\本站点\平均值=leijizhi/jishu; row=row+1; } 1.18 为什么我使用 ReportLoad()函数无法打开我使用 ReportSaveas()函数保存的报表? 此问题请仔细检查如下的内容: 1、路径与文件名称正确吗?格式:######\#####\#####.rtl。 2、文件的格式正确吗?ReportSaveAs()函数可以保存为 rtl 和 xls 两种格式的报表, 但 ReportLoad()函数只能调入 rtl 格式的。 3、路径与文件名的总字符长度过长吗? 组态王的字符串只支持 127 个字符,超过 有可能导致调入失败。 1.19 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)? 针对报表中的数据统计需求功能,组态王提供了 sum(),average(),max(),min()函 数来实现相应的需求。 如:在报表的某一单元格写入 =sum('a1:a100') 此功能为对从 A1 到 A100 的连 续的单元格进行求和,其他的函数的应用,请参照组态王的函数使用手册。

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

5

“报表与打印”常见问题解答

1.20 组态王的报表能否直接保存成 excel 格式的文件,这样可以直接通过 excel 程序打 开? 组态王 6.51 及其以后的版本,其 ReportSaveAs()函数提供了报表直接保存成 ######.xls 文 件 的 功 能 , 用 户 只 要 根 据 函 数 帮 助 在 将 保 存 参 数 设 置 为 ######\#####\#####.xls 即可实现。 注意:用户要保存.xls 后缀的文件,必须在计算机上安装 excel 软件才可以。 1.21 我使用组态王的报表控件制作工程报表, 采用的 ReportSetCellValue()来对报表控件 进行后台填值操作,为什么当我显示报表时却是空白的? 如果你要对组态王的报表控件进行赋值操作,首先必须保证此报表控制所在的画面 是打开的(即驻留于内存内)只要这样赋值操作才能将数据写入报表控件中。所以如果 你要做报表, 一般建议你的工程内的所有画面的属性都应该是覆盖式而不能是替换式的, 因为如果某个画面是替换式,则它被打开时其他的画面都将会被自动关闭,这样你的报 表赋值操作也就无法完成了。 1.22 在组态王运行系统中如何实现往报表单元格中插入数据? 组态王提供如下几个函数实现往报表单元格中插入数据: ReportSetCellString/ReportSetCellString2:往指定报表的指定单元格中插入字符串; ReportSetCellValue/ReportSetCellValue2:往指定报表的指定单元格中插入数值; 调用格式: ReportSetCellString("实时数据报表", 1, 1, \\本站点\$日期); ReportSetCellString2("实时数据报表", 1, 1, 1, 3, \\本站点\$日期); ReportSetCellValue("实时数据报表", 1, 1, \\本站点\原料油液位值); ReportSetCellValue2("实时数据报表", 1, 1, 1,3,\\本站点\原料油液位值); 1.23 组态王中扩展名为.rtl 的文件是什么格式的文件?如何打开此类型的文件? .rtl 是组态王自己的报表文件,只能通过组态王提供的报表函数(ReportLoad 函数) 载入到组态王画面中打开,实现过程如下: 1)在组态王画面上添加一空报表控件,控件命名:实时数据报表并添加一个按钮; 2)在按钮的弹起时命令语言中输入如下脚本语言: ReportLoad("实时数据报表","D:\组态王工程\实时报表.rtl");
北京亚控科技发展有限公司 6

“报表与打印”常见问题解答

1.24 为什么在命令语言中使用报表函数却不执行? 在命令语言中(包括应用程序命令语言、数据改变命令语言、事件命令语言和热键 命令语言)使用各种报表函数时,在报表窗口所在的画面关闭时函数无法正常执行,如: 使用 ReportSetCellValue()函数往报表单元格中写入数据时,数据值是无法正确写入的。 解决此问题的方法是打开或隐藏报表窗口所在的画面,隐藏画面使用 HidePicture("报表 窗口画面")函数来实现。

2. 打印
2.1 组态王软件对普通商业打印机的选择有什么要求? 组态王的画面、报表等(报警信息直接打印机输出除外)的普通打印都是通过调用 windows 提供的打印接口来实现的。都打印机没有特别的要求。 报警直接打印机输出为提高打印速度是通过直接写并口来实现的,要求接具有独立 字库的针式打印机。 对于工业上使用的票据专用打印机,必须由组态王软件提供专门的驱动程序才可以 正常使用。 2.2 组态王软件如何打印运行过程中的画面? 对于组态王运行工程中的画面, 其打印是通过组态王提供的 PrintWindow()函数实现 的,具体使用请参照组态王的在线帮助或函数手册。 2.3 组态王软件的表格窗口的数据是如何进行打印输出的? 组态王软件提供的表格窗口,组态王的函数列表中提供了专用的打印函数 ReportPageSetup()、ReportPrint()、ReportPrint2()、ReportPrintSetup()来实现打印。 2.4 为什么用 ReportPrint2()函数不能实现自动打印报表? 1)例如要自动打印“实时数据报表”,那么可以用下面的方法实现: ReportPrint2(“实时数据报表”); 或 ReportPrint2(“实时数据报表”,1); 2)确认默认的打印机: 找到需要打印的报表控件,单击报表控件,在弹出的报表工具箱上,找到打印图标, 在打开的窗口里选择默认打印机。

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

7

“报表与打印”常见问题解答

2.5 组态王软件的控件的数据是如何进行打印输出的? 对于第三方提供的控件,如 KVADODBGrid 等,其打印一般使用控件的事件或方法 中提供的打印函数实现。不同的控件提供的打印函数不同,请参考原厂家提供的控件的 说明文档。 2.6 在组态王中进行打印预览时,为什么不能进行打印方向的设置,如何解决? 如果出现此现象的话,请将打印机设置成横向后,在组态王进行打印预览时就可以 选择横纵向了。

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

8


相关文档

组态王教学-报警与打印
组态王整点报表代码
报表系统-组态王报表系统
组态王月报表制作
组态王报表导入导出
组态王报表演示说明
基于组态王的Excel工业报表系统
组态王专用周实验教学大纲
组态王报表功能实现方法
组态王实验二 报警及报表功能实现
电脑版