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

更新时间:2023-08-05 16:44:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

主要实现了组态王ODBC数据库条件查询,组合查询、SQL数据库删除的具体实现及方法实例。

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) 建立排序选项(根据我的项目实用,选用单选分别为按照日期升序、日期降序、数值

升序、数值降序一次列示出来。当然如果选项过多可建立复选框进行组合,在程序中进行编写组合查询功能。);

主要实现了组态王ODBC数据库条件查询,组合查询、SQL数据库删除的具体实现及方法实例。

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) 查询排序按钮程序

主要实现了组态王ODBC数据库条件查询,组合查询、SQL数据库删除的具体实现及方法实例。

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";}

}

if (ds_mode==1) {WHE="操作员='"+user_req+"'"+"ORDER BY 日期时间 ASC"; }

test.Where=WHE;

test.FetchData();

test.FetchEnd();

6) 其它按钮标签组态简单可双击对象参看

六、 运行查看

1) 点击REFRESH,数据库全部显示,可以看到日期并未排序;

2) 选择按系统管理员查询;

3) 选择按日期查询,并选择起始和结束日期,并选择排序选项,再点击查询排序按钮;

顺利的话,可以选择其它选项查看效果。

主要实现了组态王ODBC数据库条件查询,组合查询、SQL数据库删除的具体实现及方法实例。

以前出现过类似问题,就是程序不用编程,理应数据库插入和显示应该按照日期顺

序,但实际上数据库不知何时就出现控件显示乱序,咨询过亚控技术,说是数据库问题,其它数据库也会有排序乱问题。最近通过学习例程,掌握了查询排序的方法和技巧,虽然不影响数据的存储,但锦上添花应该完美!和同行共享交流~~~

西安朗利电气设备有限公司

2014-4-30

本文来源:https://www.bwwdw.com/article/2f3m.html

Top