如何获取使用VBA连接到的SQL Server链接表?

时间:2019-05-25 23:32:47

标签: vba ms-access odbc

是否有一种方法可以知道使用ODBC连接的MS Access数据库中的链接表指向哪个SQL Server?

我使用下面的代码,但是我只获得了数据库名称,而不是SQL Server名称。

Private Function checkconn()

Dim strConnect As String
Dim lngLocation As String

strConnect = CurrentDb.TableDefs("dbo_buh_summary").Connect
lngLocation = InStr(strConnect, ";DATABASE=")
If lngLocation <> 0 Then
GetDataPath = Mid(strConnect, lngLocation + 10)
End If

End Function

1 个答案:

答案 0 :(得分:1)

假设您使用FILE dsn来原始链接表? (或更少的DSN)。我强烈建议您始终使用FILE dsn(而非系统或用户)进行链接。原因是Access会自动为您将这些链接转换为无DSN。 (因此,您无需在每台计算机上都设置DSN)。

是否已注意到上述内容?您可以使用以下命令获取服务器和数据库名称:

# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility

import re

regex = r"(# .+?\\n)(.+)"

test_str = "# Title\\n## Chapter\\n### sub-chapter#### The Bar\\nIt was a fall day.\\n"

subst = "\\1"

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 1)

if result:
    print (result)

# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

输出:

Sub m34343()

  Dim strCon     As String

  strCon = CurrentDb.TableDefs("dbo_tblHotels3").Connect
  Debug.Print strCon

  Debug.Print Split(Split(strCon, "SERVER=")(1), ";")(0)
  Debug.Print Split(Split(strCon, "DATABASE=")(1), ";")(0)


End Sub

因此,我在上面打印出了连接字符串,但是接下来的两行抓住了服务器和数据库名称。