在Access中执行connection.createQueryDef的问题

时间:2013-12-09 14:02:10

标签: sql vba ms-access access-vba createquery

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

我只是尝试从SQL服务器数据库中的表创建查询,只是为了使数据显示在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")

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

1 个答案:

答案 0 :(得分:1)

CreateQueryDefDAO.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")