组态王|通过日历控件选择时间段查询历史报警

雅轩聊科技 2024-08-29 18:08:38

哈喽,你好啊,我是雷工!

这节记录下查询历史报警信息的功能实现。

以下为实 现笔记。

01 效果演示

在日历控件中选择开始日期和结束日期,然后点击【历史报警查询】按钮,在通用控件中展示查询到的报警信息。

02 实现步骤

2.1、组态控件

①添加文本标签,标示开始日期和结束日期,以及作为按钮的历史报警查询;

②添加日历控件,用于选择开始和结束的日期;

③添加通用控件KingAdoDBGridClass,用于展示查询到的报警信息;

2.2、日历控 间

关于标签,日历控件以及按钮的设置和前面《》中有记录,此处不再赘述。

2.3、KingAdoDBGridClass

①插入通用控件

②在控件的灰色部分右击,选择【控件属性】

③首先在数据源界面的浏览处点击,在数据连接属性界面选择报警存储的数据库;

④这里需要在运行状态下,选择好数据库后然后点击右下方的【测试连接】,连接正常的话会弹出【测试连接正常】的提示框。

⑤选择报警表的名称【Alarm】,将报警表需要展示的字段选中然后点击【添加】按钮,添加到右侧框内,在右侧框依次选中字段名称,在标题处修改字段所对应的显示标题,根据显示内容的长短设置字段的宽度,然后点击应用。

⑥Alarm报警表字段说明

字段名称

说明

lOSererName

报警服务器名称

MachineName

工作站名称

TagName

变量名

TagComment

变量描述

GroupName

报警组名

AlarmValue

报警值

AlarmValueDataType

报警值数据类型

LimitValue

限值

LimitValueDataType

限值数据类型

AlarmType

报警类型

Pri

优先级

Quality

质量位

AlarmTime

报警时间

AlarmTimeMs

报警时间毫秒

EventTime

事件时间

EventTimeMs

事件时间毫秒

OperatorName

操作员名

OperatorDomain

操作域

ResumeValue

恢复值

ResumeValueDataType

恢复值数据类型

EventType

事件类型

AlarmText

报警文本

ExtendField1

扩展字段1

ExtendField2

扩展字段2

⑦表格

其他属性的设置可以根据需要设置。

2.4、查询脚本

主要的是查询按钮中脚本的实现:

脚本代码如下:

string temp;long Ayear;long Amonth;long Aday; Ayear=OCXControl0003.GetYear(); Amonth=OCXControl0003.GetMonth();Aday=OCXControl0003.GetDay();temp=StrFromInt(Ayear,10);if(Amonth<10) temp=temp+"/0"+StrFromInt(Amonth,10);else temp=temp+"/"+StrFromInt(Amonth,10);if(Aday<10) temp=temp+"/0"+StrFromInt(ADay,10);else temp=temp+"/"+StrFromInt(ADay,10); temp=temp+" 00:00:00"; long year2; long month2;long day2;year2=OCXControl0004.GetYear(); month2=OCXControl0004.GetMonth(); day2=OCXControl0004.GetDay(); string endTime;if(month2<10&&day2<10)endTime=StrFromInt(year2,10)+"/"+"0"+StrFromInt(month2,10)+"/"+"0"+StrFromInt(day2,10); if(month2<10&&day2>=10)endTime=StrFromInt(year2, 10)+"/"+"0"+StrFromInt(month2, 10)+"/"+StrFromInt(day2,10); if(month2>=10&&day2<10)endTime=StrFromInt(year2,10)+"/"+StrFromInt(month2, 10)+"/"+"0"+StrFromInt(day2,10);if(month2>=10&&day2>=10)endTime=StrFromInt(year2,10)+"/"+StrFromInt(month2, 10)+"/"+StrFromInt(day2,10);endTime=endTime+" 23:59:59"; //\\local\strDateEnd=endTime; string whe; //whe="AlarmTime>='"+temp+" 0:0:0' and AlarmTime<='"+endTime+" 23:59:59'";whe="AlarmTime between #"+temp+"# AND #"+endTime+"# AND GroupName='雷工笔记站' order by AlarmTime asc"; BJCX.Where=whe;BJCX.FetchData();BJCX.FetchEnd();

03 后记

关于组态王使用的也不多,有让你见笑的地方欢迎指正。

在查询中发现设置的日期到17号但是查询结果中有18号的内容,也不知道是什么情况,

有时候查询20号的内容查不到,查询19-21号却能显示20号的内容。

可能SQL语句写的不严谨,有知道啥情况的朋友可以告知一下。

更多相关话题和经验欢迎你在留言区或交流群留下你的宝贵经验。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注