Autoit      AutoIt上路09-Access操作(简单增、删、改)及与ListView同步   
文章目录  [隐藏]

AutoIt上路08-列表控件使用示例  http://www.gaohaiyan.com/952.html

  Microsoft Office Access是由微软发布的关系数据库管理系统,它已经通过组件的形式集成在Windows系统里,所以就算你没有安装完整版Office套件或Access程序,我们也可以通过AutoIt使用它。

  原生API里并没有提供Access相关的函数,帮助文档中也没有集成相关UDF。本文涉及的资料基本都来自于AutoItX.com。为了让新手网友知其然知其所以然,我尽可能采用sql语句的形式实现功能。如果你想偷懒,可以使用文末提供的API文件,用记事本或SciTE打开,仔细看看头部说明就知道怎么用了。

  本例在前文基础上继续开发,结合对ListView的操作实现数据库的增、删、改、查基本操作,没有用到表链接(尽管业务中有体现)、复杂查询,力求简单。

1.先来看看表的设计



  元数据、用户、日志,是3个比较特殊的。
  元数据表主要保存一些关键字,如公司产品的类型:低档、中档、高档,这3个词就属于元数据。在创建新的产品时选择类型,就只能选择这3个词中的一个。如果希望有新的类型,那么就需要权限很高的用户来操作这个表,插入新的词语(值)。
  用户表主要存放可以访问数据表的人员名单,并保存其不同的权限。根据权限高度赋予增删改查等能力。
  日志表设计为不可修改,只能查询。一切涉及到数据库的操作行为都会记录其中。

2.数据库基本操作

1)创建数据库

  ◆mdb文件路径是自定义的无中文及无空格目录
  ◆密码是可选的,不想要密码留空即可,它是访问mdb文件的密码,不同于mysql-root用户的登录密码
一般这两个都会创建为global全局的变量。
另外注意,创建数据库使用的是 ObjCreate("ADOX.Catalog") ,方法为$oADO.Create,关闭方式为 $oADO.ActiveConnection.Close 。

2)创建数据表

  ◆使用的操作器ObjCreate("ADODB.Connection")连接器
  ◆获得数据库文件$oADO.Open
  ◆通过方法$oADO.Execute执行sql语句
  ◆直接$oADO.Close关闭
这里我们连续创建了2个表,只要不Close,连接器是可以持续使用的。
id integer identity(1,1) primary key 即创建一个自动增长步进为1的整型数字主键列 id;
l_name text 即文本型列,text默认长度为50字符,最长256个字符,可以text(指定长度值);
关于access的数据类型和其它数据库基本一致,搜索之。

3)插入数据

本例就是最简单的单表插入。

增删改使用的都是ADODB.Connection,都是Execute语句。sql语句形式和其它数据库是相同的。
因为我们创建了多个表,所以insert语句指明插入到tb_demo ,如果mdb中只有一个表, 这里可以直接指定为mdb文件。

4)删除数据

都知道删除数据是有风险的。一般我们都会使用msgbox做个确认。

5)更新数据

只是sql语句不同

按照我当前设计,这个id都会在LV中显示,所以我直接读取LV中对应列的值引入即可。

6)查询数据

在数据库的使用中最考验技术的就是查询,尤其是各种复杂查询。并且在使用中最多的也是查询。

以上是常规查询流程。

7)查询表中的字段(列)数

$oREC 在执行Open(sql查询语句) 后,可以直接调用$oREC.fields.count 。

3.ListView操作与数据库的同步

增删改采用相同的业务设计:
1.获取Tab中当前选中的标签,
2.根据标签匹配当前显示的列表,
3.根据列表匹配数据表。
4.删除操作,还要获取选中的项目(行);
5.双击单元格修改操作,还要获取项目中的子项目(列);
6.这3种操作还要记录在Log表中。


---------------- 业务逻辑越来越多,头疼 ------------------
本文用到的access数据库mdb文件查看软件EasyAccess和本文源码都放到github了,各位自行下载。注意我提供的这个EasyAccess似乎不能打开使用了密码创建的mdb文件,so,现在处于开发阶段,密码为空即可。

分析代码是很好地学习方式: https://github.com/731942771/AutoitWorkingRecorder/


网友提供的UDf,#include 引入2个文件即可。内置很多简单实用的方法:
[download id="980"]

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设