系統:Windows 7
軟件:Access 2016
- 這個系列介紹一些簡單的小示例
- 包括在界面端的設置及在代碼端的實現
Part 1:本篇目標
- 常用Access數據庫格式為accdb,近來發現一種mdb數據格式的
- 作為數據庫端,本文就是驗證一下兩者在使用VBA連接時是否有一些明顯區別
- 示例:連接mdb數據庫,并將內容顯示到前端
mdb數據庫
3.png
前端效果
1.gif
Part 2:實現步驟
- 新建一個Access文件,默認為accdb格式,轉變為mdb格式步驟如下
- 打開該文件,點擊文件菜單,另存為mdb格式即可
- 在該文件中錄入相關信息
- 再新建一個Access文件,作為界面端,VBA代碼也是寫在這里
- 搭建一個簡單界面,包括一個按鈕和一個列表框
- 設計視圖下,設置列表框的列數、列標題:是、行來源類型:值列表
- 設計視圖下,按鈕的單擊事件寫入以下代碼
4.png
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
代碼截圖
5.png
6.png
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界面下工具菜單-引用
1.png
Part 5:小結
- 本文中對mdb數據庫的連接方法與accdb采用一樣的方法,目前來看可以適用
本文為原創作品,更多學習交流可加小編微信號learningBin
更多精彩,請關注微信公眾號
掃描二維碼,關注本公眾號
公眾號底部二維碼.jpg