VBA ADO連接ACCESS數據庫


一、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM