我们做历史报警/事件的查询功能时会用到“AlmDbViewCtrl”这个历史控件,经常需要对历史记录的某些关键字进行筛查,以更加精确的得到查询结果。就目前的查询功能而言完全可以实现,但我们点击筛查按钮时,总会先弹出一个条件过滤器,再次选择查询条件方可得出结果。这个重复的操作真的不友好,对于完美主义者而言。

为了解决这个痛点,讲一下如何实现关键字筛查无过滤器弹窗,现以这两种方式做个对比。

一. 有过滤器弹窗筛查

1. 在“AlmDbViewCtrl”控件的属性界面找到“查询过滤器”,可新建编辑一个过滤器收藏文件夹名为:MYFILTER.xml,放在本工程的文件目录下。

2. 在控件向导“魔法帽”找到“单选按钮组”控件

3. 设置“单选按钮组”控件,新建index内存整型标记名,做4个单选项,分别为:TgaName,AlarmGroup,Operator,Description,作为筛查关键字。选择后的index的值分别为:1,2,3,4

4. 窗口显示时脚本,即切换到历史报警界面时初始化时间以及默认查询当天报警历史记录:

#AlmDbViewCtrl1.StartTime = Text(#DTPicker2.month,"00") + "/" + Text(#DTPicker2.day,"00") + "/" + Text(#DTPicker2.year,"0000") + " " + Text(#DTPicker2.hour,"00") + ":" + Text(#DTPicker2.minute,"00") + ":" + Text(#DTPicker2.second,"00") ;
#AlmDbViewCtrl1.EndTime = Text(#DTPicker3.month,"00") + "/" + Text(#DTPicker3.day,"00") + "/" + Text(#DTPicker3.year,"0000") + " " + Text(#DTPicker3.hour,"00") + ":" + Text(#DTPicker3.minute,"00") + ":" + Text(#DTPicker3.second,"00") ;
#AlmDbViewCtrl1.SpecificTime = 1;
#AlmDbViewCtrl1.Refresh();

5.查询按钮脚本:

strPath = InfoInTouchAppDir() + "\MYFILTER1.xml";
CALL ALMSEARCHFILTER(strTagName,strAlarmGroup,strOperator,strDescription);
#AlmDbViewCtrl1.StartTime = Text(#DTPicker2.month,"00") + "/" + Text(#DTPicker2.day,"00") + "/" + Text(#DTPicker2.year,"0000") + " " + Text(#DTPicker2.hour,"00") + ":" + Text(#DTPicker2.minute,"00") + ":" + Text(#DTPicker2.second,"00") ;
#AlmDbViewCtrl1.EndTime = Text(#DTPicker3.month,"00") + "/" + Text(#DTPicker3.day,"00") + "/" + Text(#DTPicker3.year,"0000") + " " + Text(#DTPicker3.hour,"00") + ":" + Text(#DTPicker3.minute,"00") + ":" + Text(#DTPicker3.second,"00") ;
#AlmDbViewCtrl1.SpecificTime = 1;
#AlmDbViewCtrl1.ShowFilter();

6. CALL ALMSEARCHFILTER(str1,str2,str3,str4)函数脚本为:4个参数均为消息

FileDelete(strPath);
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",0,HIST_XMLCODE + "<Filter_Favorites><Record><FilterName>TAGNAME</FilterName><Element>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1, "<Name>名称</Name><OrigName>Name</OrigName><Operator>LIKE</Operator><Value>%"+str1+"%</Value><Parent>0</Parent>", 0);
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml", -1, "</Element></Record>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1, "<Record><FilterName>ALARMGROUP</FilterName><Element>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1, "<Name>组</Name><OrigName>Group</OrigName><Operator>LIKE</Operator><Value>%"+str2+"%</Value><Parent>0</Parent>", 0);
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml", -1, "</Element></Record>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1,"<Record><FilterName>OPERATOR</FilterName><Element>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1, "<Name>操作</Name><OrigName>Operator</OrigName><Operator>LIKE</Operator><Value>%"+str3+"%</Value><Parent>0</Parent>", 0);
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml", -1, "</Element></Record>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1,"<Record><FilterName>DESCRIPTION</FilterName><Element>", 0 );
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml",-1, "<Name>报警注释</Name><OrigName>Alarm Comment</OrigName><Operator>LIKE</Operator><Value>%"+str4+"%</Value><Parent>0</Parent>", 0);
FileWriteMessage( InfoInTouchAppDir() + "\MYFILTER1.xml", -1, "</Element></Record></Filter_Favorites>", 0 );
#AlmDbViewCtrl1.FilterFavoritesFile = strPath;

7. 生成的过滤文件内容为:内容可以根据需要筛查的关键字进行增减

8. 点击查询按钮后需再次选择条件确定得出结果:

到此,有过滤器弹窗关键字筛查结束。

二. 无过滤器弹窗筛查

从上面第5步开始写查询按钮的脚本就有所不同了,在这里敲黑板,抬头挺胸划重点,用到了“AlmDbViewCtrl”控件“SelectQuery”方法实现查询,脚本格式如下:

#AlmDbViewCTRL1.SelectQuery("filtername"); 

查询按钮脚本为:

#AlmDbViewCtrl1.StartTime = Text(#DTPicker2.month,"00") + "/" + Text(#DTPicker2.day,"00") + "/" + Text(#DTPicker2.year,"0000") + " " + Text(#DTPicker2.hour,"00") + ":" + Text(#DTPicker2.minute,"00") + ":" + Text(#DTPicker2.second,"00") ;
#AlmDbViewCtrl1.EndTime = Text(#DTPicker3.month,"00") + "/" + Text(#DTPicker3.day,"00") + "/" + Text(#DTPicker3.year,"0000") + " " + Text(#DTPicker3.hour,"00") + ":" + Text(#DTPicker3.minute,"00") + ":" + Text(#DTPicker3.second,"00") ;
#AlmDbViewCtrl1.SpecificTime = 1;IF index == 1 THEN
#AlmDbViewCTRL1.SelectQuery("TAGNAME");
ELSE IF index == 2 THEN
#AlmDbViewCTRL1.SelectQuery("ALARMGROUP");
ELSE IF index == 3 THEN
#AlmDbViewCTRL1.SelectQuery("OPERATOR");
ELSE IF index == 4 THEN
#AlmDbViewCTRL1.SelectQuery("DESCRIPTION");
ENDIF;ENDIF;ENDIF;ENDIF;

到此,无过滤器弹窗关键字筛查结束。

InTouch历史报警无过滤器弹窗关键字筛查视频演示

Wonderware-InTouch历史报警无过滤器弹窗筛查学习

Wonderware-InTouch 历史报警过滤器无弹窗关键字筛查相关推荐

  1. intouch历史报警

    1.安装数据库msde或完整的sqlserver数据库(intouch2014R sp1 需安装sql) 2.打开SSMS 然后用windows用户连接 3.找到安全性 登录账户选择sa打开然后修改密 ...

  2. intouch制作历史报警查询(时间查询,筛选关键字)

    在项目中,intouch制作历史报警查询已属于标配功能,如何做出按时间以及关键字来进行综合查询,提高历史报警查询效率仍然是一个值得研究的问题,接下来参考网上文章自己总结下如何制作. 1.DTPicke ...

  3. Wonderware-InTouch历史报警、操作记录导出为Excel

    Intouch自身的历史记录控件为AlmDbViewCtrl,可以查询历史报警和操作记录.我们需要在控件向导中拉出时间控件DTPicker,选择时间,关键字等,即可查询想要的结果,这些需要编写程序去实 ...

  4. hc06发送at无回应_(完结)(温言穆霆琛)全章节~~全文阅读无弹窗广告

    (完结)<家有萌妻宠上天>全章节~温言穆霆琛全文阅读无弹窗广告 (完结)<家有萌妻宠上天>全章节~温言穆霆琛全文阅读无弹窗广告 第1章 是长大了不少 "哇,穆霆琛回国 ...

  5. Extjs利用iframe无弹窗导出下载文件

    看过很多导出下载的方式,大都是弹出新窗口下载,我倒是一直用iframe来模拟加载新窗口,从而达到下载文件的目的. 下面是最近用extjs时,也是用到的iframe来模拟无弹窗下载 if(exportF ...

  6. fMRI质量预检查与服务器批量处理:时间点、体素尺寸批量审查与Dpabi(DPARSFA)服务器上无GUI无弹窗处理脑功能影像(附matlab脚本)

    | 图源-slice | 工具:dpabi5.0, spm12, NIfTI_20140122(密码:iizk)      我们知道在进行fMRI预处理的时候,要求所有被试时间点相同,它将直接影响到s ...

  7. html是网页病毒吗,无弹窗浏览器 目前最具效果性的防网页病毒软件

    平台最好用的几款浏览器是哪几个谷歌的chrome浏览器,搭配插件或者说扩展,它就是最好的浏览器,没有之一. 安全无毒,无捆绑,简洁,无弹窗. 哪个手机浏览器好?不带广告和弹窗? 有没有什么看先说的软件 ...

  8. Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移、高精度

    Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移.高精度 Google Earth谷歌地球卫片下载器 (build662)升级正式发布,水经注万能地图下载器升级正式发布,水经注 ...

  9. 干货分享:电脑无广告无弹窗的浏览器,这5款亲测干净好用

    我们在使用浏览器的过程中,经常有广告弹出是非常烦人的.有时候没有打开浏览器,也可能弹出广告,为了避免出现这些情况,一定要选对浏览器.下面给大家分享我个人用过的5款无广告无弹窗的浏览器,亲测干净好用,而 ...

最新文章

  1. 【camera】自动泊车-基于深度学习的视觉车位检测项目(课程设计--训练代码、测试代码、部署demo)(2)
  2. VS2019使用说明
  3. 大牛预测2018年深度学习走向:大批AI硬件初创将失败
  4. requests库和BeautifulSoup4库爬取新闻列表
  5. 清理Oracle安装目录里的一些日志信息
  6. mysql+显示表ddl_MySQL_DDL_数据库和表的操作
  7. mavros 使用记录
  8. RabbitMq(十二) 借用死信交换机实现延迟队列
  9. .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)...
  10. php有没有能无限遍历,php无限遍历目录代码
  11. imx6ul linux4,iMX6UL 4秒快速启动-飞凌嵌入式iMX6UL启动加速
  12. 苹果开发者中心添加UDID设备教程(及获取苹果手机的UDUD)
  13. 互联网支付系统整体架构
  14. 利用Word去除图片背景色
  15. ReXNet学习笔记 --- ReXNet: Diminishing Representational Bottleneck on Convolutional Neural Network
  16. 小康qq小助手 免费
  17. Mysql的课外补充与进阶
  18. 小猪的C语言快速入门系列(三)
  19. 黄金期货单位(黄金期货单位有哪些)
  20. 苹果计算机的优势,苹果电脑有什么优势

热门文章

  1. Redis(3)--哨兵模式,集群
  2. 【操作系统】面向真题学操作系统 —— 操作系统概述客观题
  3. 美国人口预测问题 MATLAB程序_BeansSuperman_新浪博客
  4. 数据分析与SAS学习笔记8
  5. Python实现《合成孔径雷达成像——算法与实现》图3.13
  6. memcached搭建和使用要点
  7. linux python安装位置疑惑
  8. 想体验HomeKit智能家居?不如来看看这款智能生态
  9. 制作一个移动Ubuntu系统,可以做到即插即用(U盘系统,非启动盘)
  10. 手机免ROOT支持Xposed