gpt4 book ai didi

excel - 从 Excel 调用具有多个参数的存储过程

转载 作者:行者123 更新时间:2023-12-03 02:35:43 26 4
gpt4 key购买 nike

我已经建立了 SQL Server 与存储过程所在数据库的连接。存储过程在 SQLServer 中运行良好。存储过程通过与 Excel 中的硬编码参数的连接运行得很好。我得到了我的数据集并将其插入到我的电子表格中。宏不起作用。在宏中,我尝试指向电子表格中包含参数值的范围,以便我可以将值键入电子表格中,然后让宏选取它们并将它们传递给存储过程。我对电子表格值和存储过程中的参数使用日期格式。我希望在宏运行时返回的数据集在电子表格中使用新数据进行更新。这是我的宏:

Sub GetHeatMapData()

With ActiveWorkbook.Connections("CARLA-PC-Billing-SP").OLEDBConnection.CommandText = "EXECUTE dbo.GetBillingHeatMap '" & Range("A9").Value & "" & Range("B9").Value & "'"

End With
ActiveWorkbook.Connections("CARLA-PC-Billing-SP").Refresh

End Sub

但是,如果我尝试从 Excel 中的宏运行存储过程,则会发生以下两种情况之一:

  1. 如果电子表格中存在从连接窗口运行存储过程创建的现有数据集,则宏运行时不会出错,但不会拾取动态变量,因此数据不会更改应该。

  2. 如果我删除通过从连接窗口运行存储过程创建的数据集,选择数据应开始的单元格,然后触发宏,我会收到“下标超出范围”错误,但没有任何反应。

我在存储过程末尾将 NOCOUNT 设置为关闭。以下是存储过程中的参数定义:

-- Add the parameters for the stored procedure here
@StartDate Date,
@EndDate Date

这是我的连接设置: enter image description here

我的问题是为什么存储过程无法从 Excel 电子表格单元格获取我的参数并使用它们来过滤返回的数据?

最佳答案

1 – 在 Excel 中公开参数

enter image description here

2 – 定义从 Excel 输入参数

enter image description here

3 – 确定并刷新。

enter image description here

好的,您不必在命令文本中输入参数,您可以以期望参数从 Excel 单元传递到存储过程的方式定义命令文本。如果您所在的国家/地区不使用美国数据格式,这尤其有用。此外,它使最终用户能够使用其他一些参数进行刷新,而无需编辑命令文本。这很简单 - 在 Excel 中,在您输入的存储过程名称之后的命令文本中连接到 SQL Server ? - 尽可能多 ?因为您的存储过程需要不同的参数(除以,) - 像这样 - 执行 dbo.your_procedure ?,?之后,您进入参数选项卡(在与输入命令文本相同的表单上)并从女巫单元定义将参数传递给存储过程。当然,在存储过程中还需要指定需要哪些参数:

创建过程 [dbo].[your_procedure]

(@DateFrom 日期时间,@DateTo 日期时间)作为

--- 你的存储过程 ---

在 Excel 中 - 参数 1 将发送到存储过程的 DateFrom 参数。

关于excel - 从 Excel 调用具有多个参数的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799493/

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