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

VBA与数据库——写个类操作ADO_DB信息

作者头像
xyj
发布2022-03-29 17:10:32
7200
发布2022-03-29 17:10:32
举报
文章被收录于专栏:VBA 学习VBA 学习

DB信息:就是手动记录历史DB用的按钮,开始是想打开一个新的数据库就自动记录,后来发现更多的都是临时操作一下,不值得记录,所以干脆做成一个按钮来记录。

这个功能相对比较简单,就是执行相应的sql语句。

保存DBPath:

代码语言:javascript
复制
'保存当前打开的DBPath到DBOperate.sqlite
Sub rbSaveDBPath(control As IRibbonControl)
    If VBA.Len(MPublic.scbInput) Then
        If VBA.MsgBox("DB描述:" & MPublic.scbInput & vbNewLine & "DBPath:" & DB_Info.Path & vbNewLine & "确认按此添加?", vbYesNo) = vbYes Then
            If MPublic.dbinfo.ExecuteNonQuery("insert into dbpath(描述, path, SType) values('" + MPublic.scbInput + "','" + DB_Info.Path + "', '" + VBA.CStr(MPublic.dbinfo.GetDBType) + "')") Then
                MsgBox MPublic.dbinfo.GetErr
            End If
        End If
    Else
        MsgBox "请在Input中输入DB的描述。"
    End If
End Sub

这里做了一个这样的处理:因为直接记录数据库的文件名或者udl文件名,可能不大好记忆,所以需要在customUI的comboBox(scbInput)里先输入一个描述。 保存SQL:

代码语言:javascript
复制
'保存Input中的sql到DBOperate.sqlite
Sub rbSaveSQL(control As IRibbonControl)
    If VBA.Len(MPublic.scbInput) = 0 Then
        MsgBox "请在Input中输入sql语句。"
        Exit Sub
    End If
    
    Dim s描述 As String
    
    s描述 = Application.InputBox("SQL:" & VBA.Left$(MPublic.scbInput, 255 - 4 - 2 * 2 - 30) & vbNewLine & vbNewLine & "输入此sql的描述,保存到DBOperate.sqlite。", Type:=2)
    
    If s描述 = "False" Then Exit Sub
    
    Dim strsql As String
    '如果里面有“'”,需要替换一下
    strsql = MPublic.scbInput
    If VBA.InStr(strsql, "'") Then strsql = VBA.Replace(strsql, "'", "''")
    
    If MPublic.dbinfo.ExecuteNonQuery("insert into commonSQL(描述, dbpathID, strsql) values('" + s描述 + "',(select ID from dbpath where path='" + DB_Info.Path + "'), '" + strsql + "')") Then
        MsgBox MPublic.dbinfo.GetErr
    End If
End Sub

保存sql语句也是一样,先在scbInput输入sql语句,再保存,使用InputBox来输入sql的描述,这里做了一个不超过255个字符的处理,InputBox不能显示超过255个字符,报类型不匹配错误。 删除DBPath:删除当前连接的数据库信息

代码语言:javascript
复制
Sub rbDelDBPath(control As IRibbonControl)
    If DB_Info.db Is Nothing Then
        MsgBox "请选择数据库。"
        Exit Sub
    End If
    
    If VBA.MsgBox("DBPath:" & DB_Info.Path & vbNewLine & "确定从BOperate.sqlite中删除?", vbYesNo) = vbYes Then
        If MPublic.dbinfo.ExecuteNonQuery("delete from dbpath where path='" + DB_Info.Path + "'") Then
            MsgBox MPublic.dbinfo.GetErr
        End If
    End If
End Sub

删除sql:删除当前连接的数据库的常用sql语句

代码语言:javascript
复制
Sub rbDelSQL(control As IRibbonControl)
    If DB_Info.db Is Nothing Then
        MsgBox "请选择数据库。"
        Exit Sub
    End If
    
    If VBA.Len(MPublic.scbInput) = 0 Then
        MsgBox "请在Input中选择sql语句。"
        Exit Sub
    End If
    
    If VBA.MsgBox("DBPath:" & DB_Info.Path & vbNewLine & "SQL:" & MPublic.scbInput & vbNewLine & "确定从BOperate.sqlite中删除sql语句?", vbYesNo) = vbYes Then
        ' TODO 没效果
        If MPublic.dbinfo.ExecuteNonQuery("delete from commonSQL where strsql||' -- '||描述='" + MPublic.scbInput + "' and dbpathID=(select ID from dbpath where path='" + DB_Info.Path + "')") Then
            MsgBox MPublic.dbinfo.GetErr
        End If
    End If
End Sub
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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