我是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")
如果您有另一种方式来显示有效的访问表中的数据,我也非常感谢您的帮助,因为这正是我想要的
答案 0 :(得分: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")