sql-server – SQL Server Passthrough查询作为Access中DAO记录
发布时间:2020-12-12 06:05:13 所属栏目:MsSql教程 来源:网络整理
导读:我们最近创建并将Access数据库后端迁移到SQL Server.我正在尝试使用VBA代码创建与SQL Server后端的连接,并使用存储在VB记录集中的结果运行直通查询.当我尝试这个时,查询不会通过. Dim db As DAO.DatabaseDim rs As DAO.RecordsetDim strConnect As StringstrC
我们最近创建并将Access数据库后端迁移到SQL Server.我正在尝试使用VBA代码创建与SQL Server后端的连接,并使用存储在VB记录集中的结果运行直通查询.当我尝试这个时,查询不会通过.
Dim db As DAO.Database Dim rs As DAO.Recordset Dim strConnect As String strConnect = "DRIVER=SQL Server;SERVER=55.55.55.55 SQLExpress;UID=UserName;PWD=Password" Set db = OpenDatabase("DBName",dbDriverNoPrompt,True,strConnect) Set rs = db.OpenRecordset("SELECT GetDate() AS qryTest",dbOpenDynaset) MsgBox rs!qryTest rs.Close db.Close Set rs = Nothing Set db = Nothing 我得到的问题是完全合适的GetDate()SQL Server函数返回运行时错误3085“表达式中的用户定义函数’GetDate’”.如果我在MS-Access查询生成器中创建同一个查询作为直通,在VBA代码之外,它运行正常并返回服务器的日期和时间,只在代码中它没有正确通过. 解决方法您需要使用QueryDef对象来创建Pass-Through查询,然后通过QueryDef的.OpenRecordset方法打开Recordset.以下代码适用于我:Dim qdf As DAO.QueryDef,rst As DAO.Recordset Set qdf = CurrentDb.CreateQueryDef("") qdf.Connect = "ODBC;Driver=SQL Server;Server=.SQLEXPRESS;Trusted_Connection=Yes;" qdf.SQL = "SELECT GetDate() AS qryTest" qdf.ReturnsRecords = True Set rst = qdf.OpenRecordset Debug.Print rst!qryTest rst.Close Set rst = Nothing Set qdf = Nothing (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |