logo资料库

AEW的组态王数据库KVADODBGRID控件关于查询、排序、数据删除例程.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
AEW的组态王数据库 KVADODBGRID控件 查询、排序、数据删除例程 一、 例程概述 该例程采用 KINGVIEW6.53开发,从实用出发,测试实现了以下功能: 1) 数据库按照每分钟(可更改) ,按钮(可更改)触发记录插入数据库; 2) 更改插入数据记录序号标记; 3) 按用户名日期排序进行查询显示; 4) 按日期间隔,日期排序或数值排序进行查询显示; 5) 删除无用用户名(测试或调试时)的数据库数据; 6) 删除所有数据库记录(更改工艺或空间局限时) 。 (数据库为 ACCESS 2007,建立空数据库名字为 TEST.ACCDB;组态王添加用户名 aew,密 码空;数据采用仿真 PLC 100随机数。) 二、 组态过程(内容见例程) 1) 建立所需变量; 2) 建立记录体、记录模板; 3) 组态王中建立画面如图: 4) 程序中建立启动时数据库连接、数据表建立、退出时断开数据库连接; 5) 建立通用控件 KVADODBGRID; 6) 建立登录、退出、数据库记录插入触发、删除数据和数据全删除、显示全部数据、数 据序号显示及更改序号、数据显示等内容; 7) 建立查询选项(根据我的项目实用,建立了根据日期间隔、操作员查询两个选项、日 期选项需建立两个 microsoft date and time 控件分别用于开始日期和结束日期;操作 员选项需建立查询操作员输入的文本标签, 按操作员查询时, 默认为按日期升序进行 排序。); 8) 建立排序选项(根据我的项目实用,选用单选分别为按照日期升序、日期降序、数值 升序、数值降序一次列示出来。 当然如果选项过多可建立复选框进行组合, 在程序中 进行编写组合查询功能。 ); 1 / 4
9) 建立查询和排序按钮; 三、 建立数据库连接 控制面板 -ODBC 管理器 -添加数据源 aew-选择 access(支持 2007)驱动 -选择路径下的 test.accdb 数据库即可。 (或建立一个空白的 access数据库以备数据插入记录用。 ) 四、 控件连接 画面中建立的 KVADODBGRID控件,控件名称 test,保存; 控件属性中查找 aew 数据源,选择表名称 1,选择表中的字段名称添加并更改排序及属 性; 五、 其它程序编写 1) 程序启动时: SQLConnect( DB_NET, "dsn=aew;uid=;pwd="); SQLCreateTable( DB_NET, "1", "1" ); 启动运行后即可退出系统再将第二条注 释掉//SQLCreateTable( DB_NET, "1", "1" ); 2) 程序停止时: SQLDisconnect( DB_NET); 3) 数据改变时:以分为触发写程序(为了测试方便) v_str=$日期+" "+$时间; IF (RE_SS) {no=no+1;SQLInsert( DB_NET, "1", "1" ); } 把日期和时间合并一个字符串 记录触发时开始插入记录 插入时序号 +1 4) 控件自定义函数:由日期控件中创建自动生成; 建立日期控件并定义 date1 作为开始日期, date2 定义作为结束日期; Date1 控件事件 closeup 建立函数并写程序 long year1; long month1; long day1; year1=date1.Year; month1=date1.Month; day1=date1.Day; string 查询开始时间 ; if(month1<10&&day1<10) { 查 询 开 始 时 间 =StrFromInt(year1, 10)+"-"+"0"+StrFromInt(month1,10)+"-"+"0"+StrFromInt(day1, 10); } if(month1<10&&day1>=10) { 查 询 开 始 时 间 =StrFromInt(year1, 10)+"-"+"0"+StrFromInt(month1,10)+"-"+StrFromInt(day1, 10);} if(month1>=10&&day1<10) { 查 询 开 始 时 间 =StrFromInt(year1, 10)+"-"+StrFromInt(month1,10)+"-"+"0"+StrFromInt(day1, 10);} if(month1>=10&&day1>=10) { 查 询 开 始 时 间 =StrFromInt(year1, 10)+"-"+StrFromInt(month1,10)+"-"+StrFromInt(day1, 10);} 开始日期 =查询开始时间 ; Date2 控件事件同 date1 末句为:结束日期 =查询结束时间; 5) 查询排序按钮程序 2 / 4
STRING WHE; if (ds_mode==0) { if (sort==0) {WHE="日期 >={d'"+开始日期 +"'} and 日期 <={d'"+结束日 期+"'} "+"ORDER BY 日期时间 ASC";} if (sort==1) {WHE="日期 >={d'"+开始日期 +"'} and 日期 <={d'"+结束 日期 +"'} "+"ORDER BY 日期时间 DESC";} if (sort==2) {WHE="日期 >={d'"+开始日期 +"'} and 日期 <={d'"+结束 日期 +"'} "+"ORDER BY 数值 ASC";} if (sort==3) {WHE="日期 >={d'"+开始日期 +"'} and 日期 <={d'"+结束 日期 +"'} "+"ORDER BY 数值 DESC";} } (ds_mode==1) {WHE=" 操 作 员 ='"+user_req+"'"+"ORDER BY 日 期 时 间 if ASC"; } test.Where=WHE; test.FetchData(); test.FetchEnd(); 6) 其它按钮标签组态简单可双击对象参看 六、 运行查看 1) 点击 REFRESH,数据库全部显示,可以看到日期并未排序; 2) 选择按系统管理员查询; 3) 选择按日期查询,并选择起始和结束日期,并选择排序选项,再点击查询排序按钮; 顺利的话,可以选择其它选项查看效果。 3 / 4
以前出现过类似问题,就是程序不用编程,理应数据库插入和显示应该按照日期顺 序,但实际上数据库不知何时就出现控件显示乱序,咨询过亚控技术,说是数据库 问题,其它数据库也会有排序乱问题。最近通过学习例程,掌握了查询排序的方法 ~~~ 和技巧,虽然不影响数据的存储,但锦上添花应该完美!和同行共享交流 西安朗利电气设备有限公司 2014-4-30 4 / 4
分享到:
收藏