公共模块
另一位博主的模块代码
添加函数executesql——执行sql语句
public function(功能) executesql(byval sql as string, msgstring as string) as adodb.recordset(记录集) '两个参数:sql用来存放需要执行的sql语句,msgstring用来返回执行的提示信息。对这两个参数进行数据类型定义,定义为字符串型。 byval——按值传递关键字。在定义通用过程时,如果形参前面有关键字byval,则该参数用传值方式传送,否则即以引用(即按地址)方式传递。 '传递参数sql传递查询语句,msgstring传递查询信息 '自身以一个数据集对象的形式返回 dim cnn as adodb.connection ' 定义cnn 为数据库链接的形式,配合connectstring()函数链接并打开数据库 dim rst as adodb.recordset '定义一个临时表(记录集),来存放数据库中取出的数据源 dim stokens() as string '定义一个字符串数组stokens(),将sql语句按数组的形式存放,在程序中要使用变量,这些是数组变量,要先定义 on error goto executesql_error '如果出错,进行的应急处理。执行时发生错误,将转到executesql语句处继续执行 '用split函数产生一个包含各个字符串的数组(通过split函数将sql 语句按单词存入数组,例:如果sql语句是 select * from student ,那么运行的结果就是——stokens(0)= "select",stokents(1)="*" ,stokens(2)="from",stokens(3)="student" ) stokens = split(sql)——split分歧,分裂 '创建链接 set cnn = new adodb.connection '通过connectstring将数据库链接,并且打开 cnn.open connectstring '判断数组字符串中是否含有指定内容(ucase$-将字符串全部转换成大写后判断是否存在) if instr("insert,delete,update", ucase$(stokens(0))) then '执行查询语句 cnn.execute sql '返回查询信息 msgstring = stokens(0) & "query successful" else '创建数据集对象 set rst = new adodb.recordset '返回查询结果(rst临时表记录并打开trim记录的sql操作字符串在数据库中的查询结果,以cnn的字符串表达式打开方式打开odbc数据源,adopenkeyset确定游标类型(查找方式)为键集游标(不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所做的数据更改依然可见),adlockoptimistic确定加锁类型(当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作) rst.open trim$(sql), cnn, _ adopenkeyset, _ adlockoptimistic 'rst.movelast 'get recordcount '返回记录集对象(将得到的临时列表赋值给executesql函数,由他传回并进一步赋值给mrc) set executesql = rst msgstring = "查询到" & rst.recordcount & _ "条记录" end if 函数退出前的一个清空临时列表的操作 executesql_exit: '清空数据集对象 set rst = nothing '中断连接 set cnn = nothing exit function '错误类型判断,错误出现时的处理 executesql_error: msgstring = "查询错误:" & _ err.description resume executesql_exit end function