组态王教学-报警存储与查询例程说明文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常见问题解答
北京亚控科技发展有限公司
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 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最
大最小值)? (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)
1. 报表
1.1组态王软件自带的报表窗口的行列设置限制是多少?
组态王6.51及其以前版本,报表窗口的行列设置限制为2000行52列,对新版的组态王软件,报表窗口的行列设置限制有了改善,可以定义到20000行128列。

1.2组态王软件自带的报表窗口的控件名称命名有什么特殊要求吗?
组态王报表窗口的控件名称要求一定不能与组态王的数据词典的变量的名称相同,如果相同,会导致报表有关的函数不能正常运行。

1.3组态王软件自带的报表窗口控件,如何设定单元格数据显示的小数位数?
用户使用鼠标选中组态王报表窗口控件的需要设定的单元格后,在现报表工具箱浮动菜单上选择设定单元格类型,在弹出的对话框中选择数字属性页的数值,然后根据需要设定小数位数即可。

1.4在组态王运行系统中,如何锁定报表的行和列?
在组态王运行系统中,选择要锁定行列交叉处的单元格,同时按下{Ctrl}+{L}键,可以锁定选定单元格上侧的所有行和左侧的所有列,被锁定区域边界以蓝色线条为界线。

锁定的行和列不随滚动条滚动。

例如锁定报表中的第一行和第一列,当报表的滚动条向右移动时,报表第一列不动;当报表的滚动条向下滚时,报表的第一行不动。

只锁定行,可以选择最左侧的单元格执行锁定。

只锁定列,可以选择最上边的单元格执行锁定。

锁定行列中的单元格不能被编辑,如果需要对锁定的单元格进行编辑,必须先对锁定部分进行解锁操作,在表格中单击任意单元格,同时按下{Ctrl}+{U}键,可以解除锁定。

1.5在组态王运行系统中能否对报表单元格中的数据进行修改?
可以。

在组态王开发系统中选中报表中的某个单元格或是用鼠标拖动选中多个单元格后,单击鼠标右键,在快捷菜单中将“只读”属性前面的对勾去掉,则所选单元格在运行系统中就可以编辑了。

1.6在组态王运行系统中如何清除报表单元格中的数据?
在组态王运行系统中清除报表单元格中的数据是通过ReportSetCellString/ReportSetCellString2函数来实现的,调用格式:
ReportSetCellString("实时数据报表", 1, 1, "");
ReportSetCellString2("实时数据报表", 1, 1, 1, 3, "");
1.7在组态王运行系统中,如何实现将组态王报表文件保存为以日期命名的文件?
实现过程如下:
1)在当前工程路径下建立一文件夹:日报;
2)在组态王中新建一画面,在画面中添加一按钮,在按钮的弹起时命令语言中输入如下脚本语言:
string filename;
filename=InfoAppDir()+"日报\"+StrFromReal( \\本站点\$年, 0, "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");
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年版本新增加了求历史库中某段时间的最大值、最小值、平均值的功能,使用此函数可以在组态王画面上得到指定变量在一段时间内的最大值、最小值和
平均值。

函数使用方法如下:
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;
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的连续的单元格进行求和,其他的函数的应用,请参照组态王的函数使用手册。

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");
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)确认默认的打印机:
找到需要打印的报表控件,单击报表控件,在弹出的报表工具箱上,找到打印图标,在打开的窗口里选择默认打印机。

“报表与打印”常见问题解答2.5组态王软件的控件的数据是如何进行打印输出的?
对于第三方提供的控件,如KVADODBGrid等,其打印一般使用控件的事件或方法中提供的打印函数实现。

不同的控件提供的打印函数不同,请参考原厂家提供的控件的说明文档。

2.6在组态王中进行打印预览时,为什么不能进行打印方向的设置,如何解决?
如果出现此现象的话,请将打印机设置成横向后,在组态王进行打印预览时就可以选择横纵向了。

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

相关文档
最新文档