公共模块
另一位博主的模块代码
添加函数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