前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA与数据库——写个操作数据库的加载宏_选择DB

VBA与数据库——写个操作数据库的加载宏_选择DB

作者头像
xyj
发布2022-01-18 15:23:56
5070
发布2022-01-18 15:23:56
举报
文章被收录于专栏:VBA 学习VBA 学习

选择DB:就是使用文件选择器来选择需要打开的数据库,显然这种方式是不能够完全满足数据库的连接的。

因为数据库还会涉及到密码,有的还可能是服务器数据库,在本地不存在文件来选择。

在设计这个功能的时候,我碰到了这样的问题。

使用文件选择器这种方式非常的简单方便,比输入连接字符串的信息要简单许多,但是又不能解决设置了密码的数据库以及服务器数据库。

后来想想做这种加载宏来处理就是要怎么简单怎么来,所以还是确定仅使用文件选择器这样一种方式来选择要打开的数据库。

而对于存在密码和服务器数据库,解决的办法其实也很简单,那就是使用udl文件来处理(关于udl文件的使用可以参考Provider字符串编写)。

当然udl文件保密性是不够的,这个看个人自己的情况!

所以选择DB这个功能就非常的简单了,直接调用了CADO的OpenDB就完成了:

代码语言:javascript
复制
Public Function SetDBPath(dbPath As String) As RetCode
    Dim ret As Long
    
    On Error Resume Next
    If Not DB_Info.db Is Nothing Then DB_Info.db.CloseDB
    On Error GoTo 0
    
    Dim i As Long
    If VBA.Len(dbPath) Then
        DB_Info.Path = dbPath
        Set DB_Info.db = NewCADO()
        
        ret = DB_Info.db.OpenDB(dbPath)
        If ret Then
            SetDBPath = ret
            MsgBox DB_Info.db.GetErr()
            Exit Function
        End If
        
        Erase DB_Info.Tables
        DB_Info.TablesCount = 0
        DB_Info.ActiveTable.SName = ""
        
        rib.InvalidateControl "ddTable"
        rib.InvalidateControl "cbSQL"
    End If
    
    rib.InvalidateControl "gpDBOperate"
    
    SetDBPath = RetCode.SuccRT
End Function

代码里面还涉及到了一些Ribbon界面的一些控件处理,主要逻辑就是调用CADO的OpenDB

这样一般的本地数据库,像access、sqlite、excel等就只需要使用文件选择器来选择相应的文件即可。

对于设置了密码的数据库或服务器数据库,就把udl文件编写好,保存在某个地方,然后选择相应的udl文件。

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

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

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

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

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