1

我是 VBA 新手,在使用带有连接对象的 createQueryDef 方法时遇到问题。

我只是想从 SQL Server 数据库中的表创建一个查询,只是为了让数据出现在 Access 中。我打开了连接,然后尝试使用 createQueryDef 方法,但它给了我一个运行时错误:

“参数类型错误、超出可接受范围或相互冲突”

这是代码:

Sub connect()

Dim conn As ADODB.Connection
Set conn = CreateObject("ADODB.Connection")

conn.ConnectionString = "Provider=SQLOLEDB;" & _
"Data Source=MyDataSource;" & _
"User Id=MyUserID;" & _
"Password=MyPassword;" & _
"initial catalog=MyDatabase;"

conn.Properties("Prompt") = adPromptAlways

conn.Open

Dim qd As QueryDef

Set qd = conn.CreateQueryDef("test", "SELECT * FROM Mytable")

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "test", "C\MyFolder\test.xls"
rs.Close
conn.Close
Set conn = Nothing

End Sub

我收到以下错误:

Set qd = conn.CreateQueryDef("test", "SELECT * FROM Mytable")

如果您有另一种方法来显示有效访问表中的数据,我也感谢您的帮助,因为这正是我想要的

4

1 回答 1

1

CreateQueryDef是一个DAO.Database对象的方法。它不是 ADO 连接对象的可用方法。

如果您的目标是创建一个 Access 查询对象,并且您在 Access 会话中使用 VBA 执行此操作,则可以将 ADO 排除在外,并使用DAO.Database对象通过该方法创建查询CreateQueryDef

Dim db As DAO.Database
Dim qd As QueryDef

Set db = CurrentDb
Set qd = db.CreateQueryDef("test", "SELECT * FROM Mytable")
于 2013-12-10T00:14:21.913 回答