Intouch自身的历史记录控件为AlmDbViewCtrl,可以查询历史报警和操作记录。我们需要在控件向导中拉出时间控件DTPicker,选择时间,关键字等,即可查询想要的结果,这些需要编写程序去实现。
![](https://img-blog.csdnimg.cn/20190902223031842.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
显示时:
#DTPicker9.value = $DateString;
#DTPicker10.value = "00:00:00";
#DTPicker11.value = $DateString;
#DTPicker12.value = "23:59:59";
#AlmDbViewCtrl2.SpecificTime = 1;
#AlmDbViewCtrl2.StartTime = StringMid(#DTPicker9.value,6,2) + "/" + StringMid(#DTPicker9.value,9,2) + "/" + StringMid(#DTPicker9.value,1,4) + " " + #DTPicker10.value;
#AlmDbViewCtrl2.EndTime = StringMid(#DTPicker11.value,6,2) + "/" + StringMid(#DTPicker11.value,9,2) + "/" + StringMid(#DTPicker11.value,1,4) + " " + #DTPicker12.value;
#AlmDbViewCtrl2.Refresh();
查询:
#AlmDbViewCtrl2.SpecificTime = 1;
#AlmDbViewCtrl2.StartTime = StringMid(#DTPicker9.value,6,2) + "/" + StringMid(#DTPicker9.value,9,2) + "/" + StringMid(#DTPicker9.value,1,4) + " " + #DTPicker10.value;
#AlmDbViewCtrl2.EndTime = StringMid(#DTPicker11.value,6,2) + "/" + StringMid(#DTPicker11.value,9,2) + "/" + StringMid(#DTPicker11.value,1,4) + " " + #DTPicker12.value;
#AlmDbViewCtrl2.GroupName = "$SYSTEM";
IF CONDITION "" THEN
CALL ALMFILTERSEARCH(CONDITION);
#AlmDbViewCtrl2.ShowFilter();
ELSE
#AlmDbViewCtrl2.Refresh();
ENDIF;
QuickFunction:ALMFILTERSEARCH
FileDelete("D:\Intouch Files\FlexUI_LX2\ALARM.xml");
FileWriteMessage( "D:\Intouch Files\FlexUI_LX2\ALARM.xml",0,HIST_XMLCODE + "MYFILTER", 0 );
IF HIST_SEARCHINDEX == 1 THEN
FileWriteMessage( "D:\Intouch Files\FlexUI_LX2\ALARM.xml",-1, "名称NameLIKE%"+STR+"%0", 0);
ELSE
FileWriteMessage( "D:\Intouch Files\FlexUI_LX2\ALARM.xml",-1, "报警注释Alarm CommentLIKE%"+STR+"%0", 0);
ENDIF;
FileWriteMessage( "D:\Intouch Files\FlexUI_LX2\ALARM.xml", -1, "", 0 );
#AlmDbViewCtrl2.FilterFavoritesFile = "D:\Intouch Files\FlexUI_LX2\ALARM.xml";
以上就是实现查询历史记录的代码,实现时间筛选、关键字查询,如下图操作所示:需要过滤器选择过滤内容。
![](https://img-blog.csdnimg.cn/20190902223402574.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
若是想导出历史记录为EXCEL,导成自己想要的格式则非常麻烦,首先需要把历史记录读出,写脚本通过这个报警控件去读取会很慢,使用也较麻烦。
为了这个导出EXCEL的功能可以按照如下方法实施,实现了历史报警和操作记录的查询、筛选、排序,删除、导出。
![](https://img-blog.csdnimg.cn/20190902223633531.gif)
![](https://img-blog.csdnimg.cn/20190902225503318.gif)
通过控件嵌入INtouch画面的形式,与工程文件融为一体,只需要注册一下控件即可使用。
数据库配置如下:
服务器名:.
数据库名为:WWALMDB
登陆用户:sa
密码:123456
以下为历史报警/操作记录界面:可根据TgaName、报警组、值、HH/HI/LO/LL、类型、报警等级、操作员、节点名、报警注释等进行筛选查询,可查范围与AlmDbViewCtrl一样。
![](https://img-blog.csdnimg.cn/2019090222575421.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190902225809438.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
导出EXCEL,命名;可点击按钮实现每日定时导出历史报表。
![](https://img-blog.csdnimg.cn/20190902225835884.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
根据自己喜好的格式版面保存为EXCEL:AlarmReport\EventReport,导出结果即为查询的结果。
![](https://img-blog.csdnimg.cn/20190902225900941.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190902225912823.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTQ1MDQ2Mg==,size_16,color_FFFFFF,t_70)
与AlmDbViewCtrl比较起来操作更简单,不需要各种设置,任何项目实施只需要几分钟的时间,省去了编写简本程序的麻烦和困难。控件移植性强,极大提高调试进度。
若需要此控件可进入下面链接学习掌握。
Wonderware-InTouch历史报警、操作记录导出为Excel
Intouch-历史报警/操作记录导出为EXCEL
Intouch-报表的实际应用案例
|