将 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_date
和 end_date
。
我在 MS Access 中有一个名为 MyReport
的表,它有 8 列 - 其中 2 列是 startDate
和 endDate
。
我需要将来自 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 存储过程的主要内容,如果未能解决你的问题,请参考以下文章