Access-小示例-02-连接mdb数据库

微信公众号原文

系统:Windows 7
软件:Access 2016

  • 这个系列介绍一些简单的小示例
  • 包括在界面端的设置及在代码端的实现

Part 1:本篇目标

  1. 常用Access数据库格式为accdb,近来发现一种mdb数据格式的
  2. 作为数据库端,本文就是验证一下两者在使用VBA连接时是否有一些明显区别
  3. 示例:连接mdb数据库,并将内容显示到前端

mdb数据库

Access-小示例-02-连接mdb数据库_第1张图片
3.png

前端效果

Access-小示例-02-连接mdb数据库_第2张图片
1.gif

Part 2:实现步骤

  1. 新建一个Access文件,默认为accdb格式,转变为mdb格式步骤如下
    • 打开该文件,点击文件菜单,另存为mdb格式即可
    • 在该文件中录入相关信息
  2. 再新建一个Access文件,作为界面端,VBA代码也是写在这里
    • 搭建一个简单界面,包括一个按钮和一个列表框
    • 设计视图下,设置列表框的列数列标题:是行来源类型:值列表
    • 设计视图下,按钮的单击事件写入以下代码
Access-小示例-02-连接mdb数据库_第3张图片
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

代码截图

Access-小示例-02-连接mdb数据库_第4张图片
5.png

Access-小示例-02-连接mdb数据库_第5张图片
6.png

Part 4:部分代码解读

  1. 对数据库的操作,一般分为以下几个步骤
    • 确定数据库地址
    • 连接数据库
    • 确定SQL语句
    • 执行SQL语句
    • 若有返回结果,对返回结果进行处理
  2. 执行SQL语句一般有两种方法
    • Set rs = adConn.Execute(SQL),若无需返回结果,可以采用该方法,例如插入、删除、更新等操作
    • rs.Open SQL, adConn, adOpenKeyset, adLockOptimistic,若需要返回结果,可以采用该方法,例如查询
    • 当然还有一些更细致的区别,但一般也只用到这两个区别
  3. 本文使用ADODB.Connection连接数据库,记得务必在Access中手动加入引用,本文采用的是Microsoft ActiveX Data Objects 6.1 Library,加入方法如下
    • VBE界面下工具菜单-引用
Access-小示例-02-连接mdb数据库_第6张图片
1.png

Part 5:小结

  1. 本文中对mdb数据库的连接方法与accdb采用一样的方法,目前来看可以适用

本文为原创作品,更多学习交流可加小编微信号learningBin


更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg

你可能感兴趣的:(Access-小示例-02-连接mdb数据库)