VBA与数据库——写个操作数据库的加载宏

2022-01-18 15:23:27 浏览数 (1)

工作中用多了VBA后,对数据处理自然会有很多心得。

个人目前的状态,基本上会把自己一些经常用到的数据进行结构化处理,用数据库来保存。

不知道大家最终是否都是这样,个人现在使用VBA更多的都是在操作数据库。

刚开始接触数据库的时候,惊叹于他的高效和简洁,但是使用也仅仅是调用ADO进行一些简单的操作,对于数据库的原理是不懂的。

随着使用的加深,也会上网查找一些数据库方面的知识,发现数据库太高深了!还好个人也不是要做什么专门的程序开发,仅仅是使用VBA来处理数据而已,学些皮毛也够用。

从开始写一些针对特定数据库的操作,到后面自己创建一些简单的数据库,发现使用VBA来操作数据库,用的多的还就是简单的查找、添加、删除、更新数据,所以就想到了写个简单的加载宏,用来对工作中用到的数据库进行一些常规的操作,目前实现的一些简单功能:

  • 选择DB、断开DB这个很好理解。
  • 历史DB:这个是用来记录打开过的数据库的,省得一些经常需要操作的数据库需要去找路径或者输入连接字符串。这个是使用sqlite数据库来存储的,2个表信息:
代码语言:javascript复制
CREATE TABLE IF NOT EXISTS dbpath (
  ID integer not null primary key autoincrement,
  描述 text not null unique,
  path text not null unique,
  时间 timestamp not null default (datetime(CURRENT_TIMESTAMP, 'localtime')),
  -- '0'sqlite  '1'oracle, vba里都使用ado操作,没什么用
  SType char(1) default '0' check(length(SType)=1)
);

-- 常用的sql语句
CREATE TABLE IF NOT EXISTS commonSQL (
  ID integer not null primary key autoincrement,
  描述 text not null unique,
  dbpathID integer not null check(typeof(dbpathID)='integer') references dbpath(ID) on update cascade on delete cascade,
  strsql text not null,
  时间 timestamp not null default (datetime(CURRENT_TIMESTAMP, 'localtime')),
  unique(dbpathID, strsql)
);
  • DB信息:就是手动记录历史DB用的按钮,开始是想打开一个新的数据库就自动记录,后来发现更多的都是临时操作一下,不值得记录,所以干脆做成一个按钮来记录。
  • 读取表名、读取字段名:这个功能很好理解。最开始也是想打开一个数据库自动去读取,但是发现有些数据库的表比较多,读取很费时间,没有必要自动去读取,等到确实需要的时候再手动去读取。
  • 读取、写入:对应的就是select和insert,只是做了一些通用化处理。
  • 执行SQL:执行写好的sql语句。

0 人点赞