美文网首页
Access-小示例-02-连接mdb数据库

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

作者: Data_Python_VBA | 来源:发表于2020-08-18 20:12 被阅读0次

    微信公众号原文

    系统:Windows 7
    软件:Access 2016

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

    Part 1:本篇目标

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

    mdb数据库

    3.png

    前端效果

    1.gif

    Part 2:实现步骤

    1. 新建一个Access文件,默认为accdb格式,转变为mdb格式步骤如下
      • 打开该文件,点击文件菜单,另存为mdb格式即可
      • 在该文件中录入相关信息
    2. 再新建一个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:部分代码解读

    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界面下工具菜单-引用
    1.png

    Part 5:小结

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

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


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

    公众号底部二维码.jpg

    相关文章

      网友评论

          本文标题:Access-小示例-02-连接mdb数据库

          本文链接:https://www.haomeiwen.com/subject/nyfldktx.html