Private CommandText As String ' 声明私有变量 CommandText 为字符串类型 Private Cnn As Variant, Rst As Variant ' 声明变量 Cnn 和 Rst 为变体类型

' 只写属性, 设置查询命令 Public Property Let SelectCommand(ByVal x As String) CommandText = x ' 将传入的参数 x 赋值给 CommandText 变量 End Property

' 只写属性, 设置 Excel 连接字符串 Public Property Let ExcelConnectionString(ByVal x As String) If Application.Path Like "WPS" Then ' 判断是否为 WPS 软件 Cnn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';Data Source=" & x ' 设置 Excel 连接字符串 Else ' 不是 WPS 软件 Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=yes;imex=0';Data Source=" & x ' 设置 Excel 连接字符串 End If End Property

' 只写属性, 设置 Access 连接字符串 Public Property Let AccessConnectionString(ByVal x As String) Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & x & ";Persist Security Info=False;" ' 设置 Access 连接字符串 End Property

' 方法, 将查询结果复制到指定的单元格 Public Sub DataCopy(ByVal Range As Range) ' Debug.Print CommandText Cnn.Open ' 打开数据库连接 Range.CopyFromRecordset Cnn.Execute(CommandText) ' 将查询结果复制到指定的单元格 Cnn.Close ' 关闭数据库连接 End Sub

' 方法, 返回查询结果集 Public Function GetRstData() As Variant ' Debug.Print CommandText Cnn.Open ' 打开数据库连接 Rst.Open CommandText, Cnn, 1, 3 ' 执行查询命令 GetRstData = Rst.GetRows ' 将查询结果赋值给 GetRstData 变量 Rst.Close ' 关闭查询结果集 Cnn.Close ' 关闭数据库连接 End Function

' 方法, 判断查询结果是否为空 Public Function GetRstDataBoolean(Optional ByRef Arr As Variant = Nothing) As Boolean ' Debug.Print CommandText Cnn.Open ' 打开数据库连接 Rst.Open CommandText, Cnn, 1, 3 ' 执行查询命令 If Rst.RecordCount = 0 Then ' 判断查询结果是否为空 GetRstDataBoolean = False ' 结果为空,返回 False Else Arr = Rst.GetRows ' 结果不为空,将结果赋值给 Arr 变量 GetRstDataBoolean = True ' 返回 True End If Rst.Close ' 关闭查询结果集 Cnn.Close ' 关闭数据库连接 End Function

' 方法, 执行插入或更新命令 Public Sub InsertOrUpdate(ByVal x As String) ' Debug.Print x Cnn.Open ' 打开数据库连接 Cnn.Execute (x) ' 执行插入或更新命令 Cnn.Close ' 关闭数据库连接 End Sub

' 返回一个 ID 编号,由日期与时间拼接 Public Function Get_Code(ByVal Number As String) As String Get_Code = Number & WorksheetFunction.Text(Now, "-yymmdd-hhssmm-") & WorksheetFunction.RandBetween(1000, 9999) ' 将传入的参数与日期、时间和随机数拼接,作为 ID 编号返回 End Function

' 初始化类操作,定义 Cnn 和 Rst 对象 Private Sub Class_Initialize() Set Rst = CreateObject("ADODB.Recordset") ' 创建 Rst 对象 Set Cnn = CreateObject("ADODB.Connection") ' 创建 Cnn 对象 End Sub

VBA 代码逐句解析:数据库操作类

原文地址: https://www.cveoy.top/t/topic/lCBs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录