在Excel/VBA中更改存储过程参数

r3i60tvu  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(142)

我成功地通过SQL查询将数据拉入Excel,在VBA中的格式如下:

.Open "exec sp_MyProcedure @Node_Id = 05,@Subsidiary_Cd = '1',@WeekEndDate = '2016-05-28', @JobType = '12',@ReportLevel = 4"

我想让用户输入最近一周的结束日期,这将更改@WeekEndDate参数为他们的输入,或者有一个单元格显示最近一周的结束日期,而不需要用户输入(如果可能的话?)。所有其他参数保持不变。我是vba的新手,没有太多的经验,在excel的任何帮助是感激的。

c8ib6hqw

c8ib6hqw1#

请考虑以下内容:

Dim NodeId, SubsidiaryCd, WeekEndDate, JobType, ReportLevel

NodeId = 05
SubsidiaryCd = "1"
WeekEndDate = "2016-05-28"
JobType = "12"
ReportLevel = 4

.Open "exec sp_MyProcedure " & _
    "@Node_Id = " & NodeId & "," & _
    "@Subsidiary_Cd = '" & SubsidiaryCd & "'," & _
    "@WeekEndDate = '" & WeekEndDate & "', " & _
    "@JobType = '" & JobType & "'," & _
    "@ReportLevel = " & ReportLevel

这和前面的指令完全一样;现在只需要将WeekEndDate变量的常量值更改为所需的日期,例如:

WeekEndDate = Format(Date(), "yyyy-mm-dd")
djp7away

djp7away2#

首先,这取决于你认为一周的最后一天是什么。对于我的测试,我假设星期六。
第二,我假设“最当前的一周”,你的意思是最后一个完整的一周(而不是我们目前所处的一周)。
第三,我假设您包含的代码片段是您在VBA代码中集成的SQL。
因此,如果单元格A1中有=TODAY(),则可以在单元格A2中放入以下公式,然后将VBA代码段更改为:
公式:=A1-WEEKDAY(A1)

.Open "exec sp_MyProcedure @Node_Id = 05,@Subsidiary_Cd = '1',@WeekEndDate = '" & ActiveSheet.Cells(2, 1).Value & "', @JobType = '12',@ReportLevel = 4"

从这里开始,您可以按照相同的想法自定义过程中的所有参数。

相关问题