【问题标题】:Pass Access table's date value as a parameter to SQL Server's stored procedure将 Access 表日期值作为参数传递给 SQL Server 存储过程
【发布时间】: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中显示 工作簿。

希望我很清楚。

【问题讨论】:

  • 您需要帮助的哪些部分?
  • 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 查询。

标签: sql-server ms-access pass-through


【解决方案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

【讨论】:

  • 不知道为什么这个解决方案在没有其他选择的情况下被否决
猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2013-07-06
相关资源
最近更新 更多