哈喽,你好啊,我是雷工!
这节记录下查询历史报警信息的功能实现。
以下为实 现笔记。
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语句写的不严谨,有知道啥情况的朋友可以告知一下。
更多相关话题和经验欢迎你在留言区或交流群留下你的宝贵经验。