使用VBA

问题描述:

这是一个奇怪的一个,而我事先道歉在Excel电子表格中从SQL SP提取数据 - 我有以下VBA代码在一个名为“刷新”一个ActiveX按钮:使用VBA

Sub Refresh_Click() 

With ActiveWorkbook.Connections("Lender Pipeline").OLEDBConnection 
.CommandText = "EXECUTE dbo.sp_Lender_Pipeline " & Range("Q2").Value 
End With 

ActiveWorkbook.Connections("Lender Pipeline").Refresh 

End Sub 

它通常做的,根据Q2单元格的值从SQL SP中提取数据,并根据该值 - 这是我手动添加到单元格中的数字刷新SP表格。该数字通常在1到120之间(基于SP内的ID)。

问题:

  • 看来输入特定号码时,只拉数据。即29
  • 对于其他数字,我必须手动点击'全部刷新'。
  • 如果我在SQL Server Management中手动执行SP,它工作得很好,所以问题似乎在于VBA。
  • 如果我手动从Excel电子表格中执行SP,它也能正常工作...

有没有人有一个线索,为什么这可能发生吗?它可能是VBA,还是别的?让我知道是否需要进一步澄清。

谢谢你。

+0

您是否运行SQL事件探查器以确保number参数按预期进入SP,并且该过程实际上正在被解雇?无论参数如何,返回列的名称和数量是否一致?也许SET NOCOUNT ON;看起来好像是因为Refresh All似乎起作用。在Excel 2013中,您现在在数据连接中有一个新的复选框选项。新选项是在使用“全部刷新”时是否刷新特定连接。这是否被检查? “单元格值更改时自动刷新”复选框怎么样?在这里钓鱼,但试图帮助。 :-) – DanielG

+0

有一件事几乎总是有效的,就是让SP填充一个TEMP表,并将Excel表基于TEMP表,并由SP更新。 – DanielG

奇怪的是我的同事之前也有过这个问题。尝试了各种各样的修复,没有一个看起来工作,但以完全相同的方式重建工作簿似乎纠正了它。

不是最好的解决方案,但它已在过去工作。如果没有,请尝试使用VBA在更改命令文本后调用refreshall命令并查看是否有帮助。

非常感谢您的建议 - 它会显示在连接属性禁用后台刷新做了窍门。