📄 module1.bas
字号:
Attribute VB_Name = "Module1"
Public Function ConnectString() _
As String
'此处要正确填写连接字符串
'共有三种方式 1无DSN的ODBC连接 2有无DSN的ODBC连接 3直接连接(我选用的是第三种)
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\SP.mdb;Persist Security Info=False"
End Function
Public Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset
'用来执行一个SQL语句,参数SQL传递一个字符串,参数MsgString用来返回连接错误,函数的返回值为一个记录集
Dim cnn As ADODB.Connection '建立连接引用
Dim rst As ADODB.Recordset '建立记录集引用
Dim sTokens() As String '分配数组
On Error GoTo ExecuteSQL_Error '错误处理
sTokens = Split(sql) '用来分辨SQL语句的类型
Set cnn = New ADODB.Connection '生成连接对象
cnn.CursorLocation = adUseClient '要加这个游标,要不然后面的书签不能用
cnn.Open ConnectString, "", "" 'ConnectString给出了连接的消息
If InStr("INSERT,DELETE,UPDATE,EXECUTE", UCase$(sTokens(0))) Then
cnn.Execute sql '如果是插入,删除,修改中的操作则直接执行 因为没有返回记录集对象
MsgString = sTokens(0) & " query successful" '生成消息
Else '否则要建立一记录集对象,用来接受查询语句的返回值
Set rst = New ADODB.Recordset '生成记录集对象
rst.CursorLocation = adUseClient '要加这个游标,要不然后面的书签不能用
rst.Open Trim$(sql), cnn, adOpenKeyset, adLockBatchOptimistic, adCmdText
'第一个参数可以是一个已经存在的Command对象,一条SQL语句,一个表名,一个存储过程名
'第二个参数是一个与Recordset对象相连的Connection对象
'第三个参数是记录集的类型(adOpenForwardOnly,adOpenStatic,adOpenKeyset,adOpenDynamic)
'第四个参数是记录集的锁类型(adLockReadOnly,adLockPessimistic,adLockOptimistic,adLockBatchOptimistic)
'第五个参数是表明第一个参数的类型(adCmdUnknown,adCmdFile,adCmdStoredProc,adCmdTable,adCmdText)
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -