gpt4 book ai didi

sql-server - SQL Server 直通查询作为 Access 中 DAO 记录集的基础

转载 作者:行者123 更新时间:2023-12-02 10:45:08 25 4
gpt4 key购买 nike

我们最近创建了 Access DB 后端并将其迁移到 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对象创建传递查询,然后通过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

关于sql-server - SQL Server 直通查询作为 Access 中 DAO 记录集的基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com