一、ACCESS數據庫加密
1、ACCESS 2013數據庫加密方式
(1)使用舊版加密(適用於反向兼容和多用戶數據)
(2)使用默認加密(安全性較高)
ADO連接僅支持舊版加密,使用VBA代碼動態創建帶密碼的Access 數據庫文件,也是舊版加密。
2、數據庫如果采用手工設置密碼,則要設置為舊版加密方式:
打開ACCESS 2013—Access選項—客戶端設置—加密方法--使用舊版加密(適用於反向兼容和多用戶數據)
二、設置ADO連接ACCESS數據庫方式一
(1)引用 Microsoft ActiveX Data Objects 2.x Library(操作方式:Visual Basic-工具-引用,不同office版本不同)
說明:當未引用,運行后會顯示“用戶定義類型未定義”
(2)連接代碼
Sub 導入數據1()
Dim cnn As ADODB.Connection '數據庫連接
Dim mydata As String '數據庫的完整路徑和名稱
Dim mytable As String '數據表名稱
Dim sql As String 'sql語句
Dim rs As ADODB.Recordset '臨時數據表紀錄
Dim i As Integer '循環數據變量(獲取數據表字段)
'1、連接數據庫
Set cnn = New ADODB.Connection
mydata = ThisWorkbook.Path & "\進銷存數據庫.accdb"
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Database Password='123456'"
.Open mydata
End With
'2、建立與數據庫的連接
mytable = "采購數據3"
sql = "select 采購數據3.ID,采購數據3.采購日期,采購數據3.供貨類型,采購數據3.采購分類,采購數據3.供應商,采購數據3.名稱,采購數據3.單位,采購數據3.單價,采購數據3.數量,采購數據3.金額,采購數據3.入賬日期" & " from " & mytable & " order by 采購日期"
Set rs = New ADODB.Recordset
rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
'3、復制數據庫數據
' (1)清除原數據
ActiveSheet.Cells.ClearContents
'(2)復制字段名
For i = 1 To rs.Fields.Count
Cells(1, i) = rs.Fields(i - 1).Name
Next i
'(3)復制全部數據
Range("A2").CopyFromRecordset rs
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
三、設置ADO連接ACCESS數據庫方式二
無需引用,直接創建連接
Sub 導入數據2()
Dim cnn As Object '數據庫連接
Dim strcnn As String 'ACCESS連接語句
Dim mydata As String '數據庫的完整路徑和名稱
Dim mytable As String '數據表名稱
Dim sql As String 'sql查詢語句
Dim rs As Object '臨時數據表紀錄
Dim i As Integer '循環數據變量(獲取數據表字段)
'1、連接數據庫
Set cnn = CreateObject("ADODB.Connection")
mydata = ThisWorkbook.Path & "\進銷存數據庫.accdb"
Select Case Application.Version * 1 '設置連接字符串,根據版本創建連接
Case Is <= 11
strcnn = "Provider=Microsoft.Jet.Oledb.4.0;Jet OLEDB:Database Password='123456';Data Source=" & mydata
Case Is >= 12
strcnn = "Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Database Password='123456';Data Source=" & mydata
End Select
cnn.Open strcnn '打開數據庫鏈接
'2、設置sql查詢語句
mytable = "采購數據3"
Set rs = CreateObject("ADODB.Recordset")
sql = "select 采購數據3.ID,采購數據3.采購日期,采購數據3.供貨類型,采購數據3.采購分類,采購數據3.供應商,采購數據3.名稱,采購數據3.單位,采購數據3.單價,采購數據3.數量,采購數據3.金額,采購數據3.入賬日期" & " from " & mytable & " order by 采購日期"
Set rs = cnn.Execute(sql) '執行查詢,並將結果輸出到記錄集對象
'3、復制數據庫數據
With ActiveSheet
.Cells.ClearContents
For i = 0 To rs.Fields.Count - 1 '填寫標題
.Cells(1, i + 1) = rs.Fields(i).Name
Next i
.Range("A2").CopyFromRecordset rs
'.Cells.EntireColumn.AutoFit '自動調整列寬
'.Cells.EntireColumn.AutoFit '自動調整列寬
End With
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub