KV75报警及报表的时间段数据查询功能实现.docx
《KV75报警及报表的时间段数据查询功能实现.docx》由会员分享,可在线阅读,更多相关《KV75报警及报表的时间段数据查询功能实现.docx(11页珍藏版)》请在冰点文库上搜索。
KV75报警及报表的时间段数据查询功能实现
KV7.5报警及报表的时间段数据查询功能实现
本月学习中遇到个问题,在KV7.5中按时间查询报警或者报表数据的功能实现。
由于学习初期加上对于产品版本变动不甚熟悉,所以遇到点困难。
现将其中一种实现方法与大家共享下。
功能说明:
配合微软日历控件实现对报警记录或者报表数据按时间段查询功能。
所用控件:
报警控件、微软日历控件(MicrosoftDateandTimePickerControl6.0(SP6)控件)、KvAdoDBGridClass控件。
数据库:
ACCESS数据库
●报警查询实现方法:
由于KV7.5的默认报警报表的时间字段由原来的AlarmDate和AlarmTime合并成了一个字段AlarmTime且为文本格式。
所以条件查询条件中无法比较文本格式的时间。
如下图:
所以要实现报警的按时间段查询只能通过脚本实现。
1.制作画面:
按照报警的一般制作方法和微软日历控件的用法先制作画面。
如下图:
画面中要具备报警控件、KvAdoDBGridClass控件用于报警的实时查询和历史查询。
微软日历控件,用于查询时间的选择。
需要说明的是微软日历控件需要设置下格式才能显示具体时间格式。
设置方法是选中微软日历控件的空间属性做如下图的格式选择:
2.KvAdoDBGridClass控件属性及数据源设置
首先要利用KvAdoDBGridClass控件实现报警的历史数据查询需要正确的设置该控件所关联的报警数据源、数据库、表名称、有效字段等属性。
具体示例如下图:
另外,需要在工程浏览器报警配置中做相应设置。
按如上步骤设置即可实现报警的历史数据查询功能。
配合条件查询脚本
KV.QueryDialog();KV.FetchData();KV.FetchEnd();
实现效果如下图:
3.微软时间控件事件脚本的编写
首先,在作为日期选择的控件中添加CloseUP()事件,编写事件脚本如下:
floatAyear;floatAmonth;floatAday;stringtemp;Ayear=ADate.Year;Amonth=ADate.Month;Aday=ADate.Day;temp=StrFromInt(Ayear,10);if(Amonth<10)temp=temp+"/0"+StrFromInt(Amonth,10);elsetemp=temp+"/"+StrFromInt(Amonth,10);if(Aday<10)temp=temp+"/0"+StrFromInt(Aday,10);elsetemp=temp+"/"+StrFromInt(Aday,10);\\local\选择日期=temp;
如图:
在作为日期选择的控件中添加Change()事件,编写脚本如下:
\\local\选择时间=StrFromInt(AT1.Hour,10)+":
"+StrFromInt(AT1.Minute,10)+":
"+StrFromInt(AT1.Second,10);
如图:
日期和时间的控件脚本编写,以上两种方式都可以实现。
4.SQL查询语句的编写
画面中创建按钮编写弹起时动画脚本如下:
stringwhe;whe="AlarmTime>#"+\\local\选择日期+""+\\local\选择时间+"#";KV.Where=whe;KV.FetchData();KV.FetchEnd();
如图:
实际上一般情况下会有两组的日历控件来组成查询的起始时间和结束时间。
控件的事件脚本是一样的,只需要将时间字符串赋给不同的变量,在编写SQL查询语句时按照格式编写如下例即可。
两组日历控件按时间段查询报警信息的SQL查询语句:
whe="AlarmTime>#"+\\local\开始日期+""+\\local\开始时间+"#AndAlarmTime<#"+\\local\结束日期+""+\\local\结束时间+"#";
全部查询如下图:
按选择日期时间查询结果如下:
●报表查询实现方法:
在这里我是按照自己建的表格模板和记录体来创建表格记录在Accesss数据库里,手动插入数据,通过日期时间字段来实现按时间查询功能
1.建立画面
第一步也是建立画面,如下图:
按钮需要实现的功能即数据库的连接、断开,按照已建的表格模版创建、删除表格,按照设置好的记录体插入数据,然后数据库数据的全部查询。
具体脚本编写参看帮助手册。
表格模板及记录体设置如下图:
其中,日期时间字段关联变量为内存字符串变量,且
\\local\日期时间=\\local\$Date+""+\\local\$Time;
2.KvAdoDBGridClass控件属性及数据源设置
其设置和报警查询中的设置类似,外部数据库的设置不需要设置报警配置中的内容,设置举例如下:
3.微软时间控件事件脚本的编写
同样,在报表的查询功能中,日历控件的脚本编写类似,建立一个变量来存储空间中的日期或时间,不再赘述。
4.SQL查询语句编写
查询语句中编写脚本如下:
\\local\查询时间=""+\\local\起始时间+""+\\local\起始时间1+"";\\local\查询时间2=""+\\local\结束时间+""+\\local\结束时间2+"";KV1.Where="日期时间>=#"+\\local\查询时间+"#And日期时间<=#"+\\local\查询时间2+"#";KV1.FetchData();KV1.FetchEnd();如图:
最后通过时间空间选择起始及结束时间,然后通过事先编好查询脚本的按钮来触发时间段的查询。
全部数据查询如下图:
按选择时间段查询数据如下图:
需要注意的几点:
1.由于查询时间字段为文本格式无法比较大小,故而条件查询无法实现该功能,只能用脚本实现;
2.脚本要严格按照上述格式编写,SQL查询语句中的“#”改成“’(单引号)”则无法实现该功能;(6.60sp1中两种方式都可以)
3.用于查询的日期时间字段关联的变量需按固定格式建立,即为日期和时间加空格拼接而成的字符串变量;
4.数据库中的字段名数据类型不能修改成日期时间格式,如果这样的话插入数据的该字段显示不正常,
5.表格模板中日期时间字段的长度需要注意,如果长度不够的话,数据无法正常显示,查询功能也就无法实现。
6.如果单独的以系统时间变量$Date和$Time关联的字段来进行时间段的查询,同样是无法实现的。