Excel执行带有日期的存储过程

时间:2018-04-30 09:52:39

标签: excel excel-vba vba

我正在尝试从vba执行存储过程,但是没有返回数据。日期的格式必须是yyyy-mm-dd。我在单元格上使用自定义格式选项设置但仍然没有数据。

如何告诉excel什么行在它成功时启动数据

Private Sub Refresh_Click()
  On Error GoTo eh:
Dim DateFrom As Date  'Declare the SellStartDate as Date
Dim DateTo As Date    'Declare the SellEndDate as Date

SellStartDate = Sheets("Sheet1").Range("B2").Value
SellEndDate = Sheets("Sheet1").Range("B3").Value

'Pass the Parameters values to the Stored Procedure used in the Data Connection
With ActiveWorkbook.Connections("NewConnection").OLEDBConnection.CommandText = "EXECUTE [dbo].[mystoredprocIwantorun] @DateFrom = '" & DateFrom & "', @DateTo = '" & DateTo & "'"
ActiveWorkbook.Connections("NewConnection").Refresh


Done:
    Exit Sub
eh:
    MsgBox "The following error occurred: " & Err.Description
End With

End Sub

当我单击按钮时没有生成错误,当我在sql管理工作室中运行此查询时数据确实返回我屏蔽了存储的proc名称以确保安全性。奇怪的是没有产生错误。

以下是我在SSMS中运行的内容,它可以正常工作并返回数据。

DECLARE @return_value int

EXEC    @return_value = [dbo].[mystoredprocIwantorun]
        @DateFrom = '2018/01/01',
        @DateTo = '2018/01/31'

SELECT  'Return Value' = @return_value

GO

当我查看sql字符串时,它只显示此内容。

  

观察:: Sql:“EXECUTE [dbo]。[mystoredproc] @DateFrom =   '00:00:00',@ DateTo = '00:00:00'“:字符串:Sheet1.Refresh_Click

修改1 我注意到了一些错误并纠正了我的代码,但仍然没有数据进入excel

Private Sub Refresh_Click()
  On Error GoTo eh:
Dim DateFrom As Date  'Declare the SellStartDate as Date
Dim DateTo As Date    'Declare the SellEndDate as Date

SellStartDate = Sheets("Sheet1").Range("B2").Value
SellEndDate = Sheets("Sheet1").Range("B3").Value

Dim sql As String
sql = "EXECUTE [dbo].[myproctorun] @DateFrom = '" & SellStartDate & "', @DateTo = '" & SellEndDate & "'"

'Pass the Parameters values to the Stored Procedure used in the Data Connection
With ActiveWorkbook.Connections("NewConnection").OLEDBConnection.CommandText = "EXECUTE [dbo].[fsp_PLReportByDates] @DateFrom = '" & SellStartDate & "', @DateTo = '" & SellEndDate  & "'"
ActiveWorkbook.Connections("NewConnection").Refresh


Done:
    Exit Sub
eh:
    MsgBox "The following error occurred: " & Err.Description
End With

End Sub

我仍然遇到连接没有将数据返回到工作表的问题。

enter image description here

如何将查询中的数据返回到工作表中,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

一个问题是您的VBA生成字符串中的日期格式不会根据单元格格式进行格式化。建议您使用这些日期单元格的.Text属性,或者更加防弹,在VBA宏中格式化存储的值。

SellStartDate = Format(Sheets("Sheet1").Range("B2").Value2, "yyyy-mm-dd")
SellEndDate = Format(Sheets("Sheet1").Range("B3").Value2, "yyyy-mm-dd")