美文网首页
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数据库

    微信公众号原文 系统:Windows 7软件:Access 2016 这个系列介绍一些简单的小示例包括在界面端的设...

  • 从sql server导出数据access时,id不会自动递增

    最近想把网站连接的数据库从sql server改成连接.mdb文件,但是发现导出的mdb文件的表里的id不会自动递...

  • PHP 连接数据库相关操作

    连接数据库 在日常开发当中,我们有时候需要用到PHP原生的数据库连接方法,下面是相关的连接代码。 示例代码

  • Hive1

    ##数据库与数据仓库 数据库:mysql,roacle,sqlserve,DB,MDB,... 数据仓库:Hive...

  • Hive安装部署

    感性认知: 数据库与数据仓库数据库:mysql、oracle、sqlserver、DB2、sqlite、MDB数据...

  • mdb数据转 mysql

    如果将mdb数据导入到mysql数据库,查了网络许久,么有找到好的办法,今天突然找到一个工具 MDB ACCDB ...

  • ESRI Personal GeoDatabase(MDB)导入

    将 esri 的数据库( .mdb 格式)导入到开源数据库 postgreSQL 中 使用fwtools工具导出到...

  • Access-小示例-01-账户权限管理

    微信公众号原文 系统:Windows 7软件:Access 2016** 这个系列介绍一些简单的小示例包括在界面端...

  • 并发工具类-Semaphore

    1.使用示例 多个线程从数据库池拿固定数量的连接,用完归还数据库池。用信号量来控制数据库池可用连接的数量,进行流控...

  • MySQL系列:MySQL的基本使用

    数据库的基本操作 在MySQL数据库中,对于一个MySQL示例,是可以包含多个数据库的。 在连接MySQL后,我们...

网友评论

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

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