【问题标题】:VBA sql query using server, database name and table使用服务器、数据库名称和表的 VBA sql 查询
【发布时间】:2020-03-13 23:35:21
【问题描述】:

我正在尝试通过 VBA 访问 ms SQL 服务器数据库以执行查询并将结果输出到 Microsoft Word 表中。

数据库在服务器上。 代码如下:

Sub SQLConnect2()
    Debug.Print "Start"

    Dim cn As Object
    Dim rs As Object
    Dim ConnectionString As String
    Dim StrQuery As String
    Dim strFirstName As String

    ConnectionString = "Provider=SQLOLEDB;Data Source=Server;Trusted_connection=yes;"
    Debug.Print ConnectionString

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open ConnectionString

    StrQuery = "USE Database SELECT TOP 10 name as Title FROM table"


    rs.Open StrQuery, cn

    Debug.Print StrQuery
    Debug.Print rs.RecordCount

End Sub

然而,这给了我运行时错误,因为它说记录集已关闭,我相信这是因为查询不起作用,但是当我将查询复制并粘贴到 SSMS 中时,它会按预期工作。

我相信这可能是由于它连接到服务器,然后在 use 语句中没有使用数据库。

感谢任何帮助!

谢谢! 詹姆斯

【问题讨论】:

  • 如果你有多个语句,你需要用分号结束每个语句。但在这种情况下,我不明白为什么需要多个语句。如果您需要从另一个数据库中选择数据而不是打开连接,您可以简单地使用三部分命名。 “从 Database.schema.table 中选择前 10 个名称”——不要忘记排序依据,这样您就知道要获得哪 10 行。

标签: sql sql-server vba ms-word adodb


【解决方案1】:

您可能需要更改连接字符串以包含数据库名称:

ConnectionString = "Provider=SQLOLEDB;Data Source=Server;Initial Catalog=YourDataBase; Integrated Security=SSPI;"

并删除查询中的使用数据库。

https://www.connectionstrings.com/sql-server/

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2017-04-10
    • 2013-09-04
    • 2021-07-27
    • 2014-06-24
    • 1970-01-01
    • 2014-07-19
    • 2017-09-30
    • 2017-05-23
    相关资源
    最近更新 更多