选择DB:就是使用文件选择器来选择需要打开的数据库,显然这种方式是不能够完全满足数据库的连接的。
因为数据库还会涉及到密码,有的还可能是服务器数据库,在本地不存在文件来选择。
在设计这个功能的时候,我碰到了这样的问题。
使用文件选择器这种方式非常的简单方便,比输入连接字符串的信息要简单许多,但是又不能解决设置了密码的数据库以及服务器数据库。
后来想想做这种加载宏来处理就是要怎么简单怎么来,所以还是确定仅使用文件选择器这样一种方式来选择要打开的数据库。
而对于存在密码和服务器数据库,解决的办法其实也很简单,那就是使用udl文件来处理(关于udl文件的使用可以参考Provider字符串编写)。
当然udl文件保密性是不够的,这个看个人自己的情况!
所以选择DB这个功能就非常的简单了,直接调用了CADO的OpenDB就完成了:
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文件。