系统:Windows 7
软件:Access 2016
- 这个系列介绍一些简单的小示例
- 包括在界面端的设置及在代码端的实现
Part 1:本篇目标
- 常用Access数据库格式为accdb,近来发现一种mdb数据格式的
- 作为数据库端,本文就是验证一下两者在使用VBA连接时是否有一些明显区别
- 示例:连接mdb数据库,并将内容显示到前端
mdb数据库
前端效果
Part 2:实现步骤
- 新建一个Access文件,默认为accdb格式,转变为mdb格式步骤如下
- 打开该文件,点击文件菜单,另存为mdb格式即可
- 在该文件中录入相关信息
- 再新建一个Access文件,作为界面端,VBA代码也是写在这里
- 搭建一个简单界面,包括一个按钮和一个列表框
- 设计视图下,设置列表框的列数、列标题:是、行来源类型:值列表
- 设计视图下,按钮的单击事件写入以下代码
Part 3:代码
Option Compare Database
Private Sub Command0_Click()
' 第1部分:后端操作
' 数据库连接
Dim currentDir
Dim dbAddr
Dim adConn As ADODB.Connection
Set adConn = New ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
' 数据库地址
currentDir = Application.CurrentProject.Path & "\"
dbAddr = currentDir & "数据库.mdb"
With adConn
.Provider = "Microsoft.ACE.OLEDB.12.0;"
.Open "Data Source=" & dbAddr
End With
SQL = "Select * From basic"
' Set rs = adConn.Execute(SQL)
rs.Open SQL, adConn, adOpenKeyset, adLockOptimistic
' 第2部分:前端显示
Set ctrl = Me.Controls("List1")
'清除原listbox 信息
ctrl.RowSource = ""
Dim rsCount
rsCount = rs.RecordCount
If rsCount < 1 Then '没有信息
' strAnswer = MsgBox("无数据", vbInformation, "提示")
Exit Sub
End If
fildCount = rs.Fields.Count ' 字段数目
existsRow = ctrl.ListCount ' 当前已写入行
'写入表头
tableHeader = ""
If existsRow = 0 Then
For i = 0 To fildCount - 1 Step 1
fildName = rs.Fields(i).Name
If tableHeader = "" Then
tableHeader = fildName
Else
tableHeader = tableHeader & ";" & fildName
End If
Next i
ctrl.AddItem tableHeader
End If
'回到第一条记录
rs.MoveFirst
For i = 1 To rsCount
fildContents = ""
For j = 0 To fildCount - 1 Step 1
fildContent = rs.Fields(j).Value
If fildContents = "" Then
fildContents = fildContent
Else
fildContents = fildContents & ";" & fildContent
End If
Next j
ctrl.AddItem fildContents
rs.MoveNext
Next i
adConn.Close
Set rs = Nothing
Set adConn = Nothing
End Sub
代码截图
Part 4:部分代码解读
- 对数据库的操作,一般分为以下几个步骤
- 确定数据库地址
- 连接数据库
- 确定SQL语句
- 执行SQL语句
- 若有返回结果,对返回结果进行处理
- 执行SQL语句一般有两种方法
-
Set rs = adConn.Execute(SQL)
,若无需返回结果,可以采用该方法,例如插入、删除、更新等操作 -
rs.Open SQL, adConn, adOpenKeyset, adLockOptimistic
,若需要返回结果,可以采用该方法,例如查询 - 当然还有一些更细致的区别,但一般也只用到这两个区别
-
- 本文使用
ADODB.Connection
连接数据库,记得务必在Access中手动加入引用,本文采用的是Microsoft ActiveX Data Objects 6.1 Library
,加入方法如下- VBE界面下工具菜单-引用
Part 5:小结
- 本文中对mdb数据库的连接方法与accdb采用一样的方法,目前来看可以适用
本文为原创作品,更多学习交流可加小编微信号learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号