将 Access 表日期值作为参数传递给 SQL Server 存储过程

Posted

技术标签:

【中文标题】将 Access 表日期值作为参数传递给 SQL Server 存储过程【英文标题】:Pass Access table's date value as a parameter to SQL Server's stored procedure 【发布时间】:2017-10-10 21:14:14 【问题描述】:

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

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

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

希望我很清楚。

【问题讨论】:

您需要帮助的哪些部分? MS Access call SQL Server stored procedure的可能重复 EXEC usp_createRecord '2017-02-01','2017-03-01' 当我将其作为传递查询运行时,我得到了结果但我希望从表'MyReport'中动态传递日期感谢您的宝贵时间。 好的。我们需要查看一些代码才能提供帮助。只是说明你想要这个动态确实可以让任何人帮助你编写代码。 我通常在 VBA 中执行此操作。听起来您希望将 select start_date, end_date from MyReport 之类的查询的每一行的结果传递给 exec usp_createRecord qry!start_date, qry!end_date 之类的传递查询,但传递查询不引用这样的 Access 查询。 【参考方案1】:

我认为您需要一个带有调用 VBA 函数的字段的查询,该函数传递您的参数,该参数从传递查询返回值,其 SQL 在运行时确定。 如果你为大量行调用这样的函数,它会很慢。

例如,您需要一个与 SQL Server 连接的直通查询。我会打电话给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 的字段,调用该函数并返回sp 的值(如果有)。我将调用该查询qry_createRecord。 SQL 将如下所示:

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

【讨论】:

不知道为什么这个解决方案在没有其他选择的情况下被否决

以上是关于将 Access 表日期值作为参数传递给 SQL Server 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

将表变量作为参数传递给表值函数

MS Access:将参数传递给不带 SQL 的子报表

Microsoft Access VBA 将参数传递给报表

VBA 将日期参数传递给 SQL Server 存储过程

将表中的列值作为参数传递给存储过程 sql

从 DoCmd.OpenReport 将参数传递给 Access 2010 报告