我正在尝试从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
我仍然遇到连接没有将数据返回到工作表的问题。
如何将查询中的数据返回到工作表中,任何人都可以帮助我吗?
答案 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")