前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA与数据库——写个类操作ADO_读取表名

VBA与数据库——写个类操作ADO_读取表名

作者头像
xyj
发布2021-12-01 20:10:15
8130
发布2021-12-01 20:10:15
举报
文章被收录于专栏:VBA 学习VBA 学习

ADO的Connection对象有一个OpenSchema方法,能够获取数据库的很多信息,比如表的名称等信息、字段的名称等信息,具体可以查看SchemaEnum枚举类型。

在操作数据库的过程中,很多时候会需要得到一些数据库的信息,这个时候就可以使用OpenSchema,在CADO里面增加一个最基础的获取表的名称的函数:

代码语言:javascript
复制
Function GetTablesName(ret() As String) As Long
    On Error GoTo errHandle

    Dim rst As ADODB.Recordset
    Set rst = AdoConn.OpenSchema(adSchemaTables)
    
    Dim k As Long
    Do Until rst.EOF
        '过滤掉系统的一些表
        If rst.Fields("TABLE_TYPE").Value = "TABLE" Then
            ReDim Preserve ret(k) As String
            ret(k) = rst.Fields("TABLE_NAME").Value
            k = k + 1
        End If
        
        rst.MoveNext
    Loop
    rst.Close
   
    Exit Function

errHandle:
    StrErr = Err.Description
    GetTablesName = RetCode.RetErr
End Function

上面的方法是通过循环读取Recordset的信息,再判断TABLE_TYPE,最后得到需要的表名,OpenSchema后面还有2个参数,再使用Restrictions进行一个简化处理:

代码语言:javascript
复制
Function GetTablesName(ret() As String) As Long
    On Error GoTo errHandle

    Dim rst As ADODB.Recordset
    Dim Restrictions
    Restrictions = Array(Empty, Empty, Empty, "TABLE")
    Set rst = AdoConn.OpenSchema(adSchemaTables, Restrictions)
    
    ReDim ret(rst.RecordCount - 1) As String
    Dim k As Long
    Do Until rst.EOF
        ret(k) = rst.Fields("TABLE_NAME").Value
        k = k + 1
        rst.MoveNext
    Loop
    rst.Close
   
    Exit Function

errHandle:
    StrErr = Err.Description
    GetTablesName = RetCode.RetErr
End Function

Restrictions参数的作用就是对Recordset的每一列设置一个筛选条件,TABLE_TYPE位于第4列,所以前面设置3个Empty。

这个函数可以很好的获取Access数据库的表名、Excel表格的Sheet名等,但sqlite数据库似乎不能够获取到,这可能是驱动程序的原因。

不过sqlite数据库可以使用其他方式来读取所需要的信息,并不一定要使用OpenSchema。

至于其他的数据库类型,因为个人较少使用,所以也没有去测试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档