将 Access table 的日期值作为参数传递给 SQL 服务器的存储过程

Pass Access table's date value as a parameter to SQL Server's stored procedure

我在 SQL Server 2016 中有一个名为 usp_createRecord 的存储过程,它接收两个参数 start_dateend_date

我在 MS Access 中有一个名为 MyReport 的 table,它有 8 列 - 其中 2 列是 startDateendDate

我需要将 MS Access 中的日期值作为参数传递给 SQL 服务器的存储过程。执行存储过程并在MS Access中显示 工作簿。

希望我说清楚了。

我认为您需要一个查询,其中包含一个调用 VBA 函数的字段,该函数传递您的参数,return 是传递查询的值,其 SQL 已确定在运行时。 如果您为大量行调用类似的函数,它会很慢。

例如,您需要通过与 SQL 服务器的连接进行直通查询。我称之为 qry_PT_createRecord.

然后你需要 VBA 中的 public function 和你传递的两个 date 参数,它修改传递查询的 sql 属性,比如:

Public Function g_createRecord(startDate As Date, endDate As Date) As Integer
    Dim db As Database
    Dim qdef As QueryDef
    Dim sql As String

    Set db = CurrentDb()
    Set qdef = db.QueryDef("qry_PT_createRecord")
    qdef.sql = "exec usp_createRecord " & startDate & "," & endDate
    g_createRecord = qdef.Execute
End Function

然后您需要一个查询来显示来自 MyReport 的字段,调用该函数,然后 return sp 的值(如果有的话)。我将该查询称为 qry_createRecord。 SQL 看起来像:

Select 
 ID, 
 startDate, 
 endDate, 
 g_createRecord(startdate,enddate)
from 
 myReport