【发布时间】:2015-06-30 22:17:50
【问题描述】:
我们需要使用 Excel 工作簿中的 OLEDB 连接从 SQL Server 查询数据。我们发现有两种方法可以做到这一点。在安全性、维护性、性能、日常使用、最终用户使用等方面,您认为一个比另一个具有整体优势吗?
-
VBA 脚本到字符串参数以通过 Excel 中的连接定义 SQL 命令文本:
Sub ParamPass() Dim qPreText As String Dim qPostText As String Dim valueToFilter As String Dim paramPosition As Integer valueToFilter = "TableName.ColumnName =" With ActiveWorkbook.Connections("ConnectionName").OLEDBConnection qPreText = .CommandText paramPosition = InStr(qPreText, valueToFilter) + Len(valueToFilter)-1 qPreText = Left(qPreText, paramPosition) qPostText = .CommandText qPostText = Right(qPostText, Len(qPostText) - paramPosition) qPostText = Right(qPostText, Len(qPostText) - InStr(qPostText, ")") + 1) .CommandText = qPreText & " '" & Sheets("SheetName").Range("CellReference").Value & "'" & qPostText End With ActiveWorkbook.Connections("ConnectionName").Refresh End Sub -
VBA 脚本调用和传递参数到数据库中的存储过程:
Sub ParamPass() Dim MyValueToPass As String MyValueToPass = Sheets("SheetName").Range("CellReference").Value With ActiveWorkbook.Connections("ConnectionName").OLEDBConnection .CommandText = "exec dbo.StoredProcName '" & MyValueToPass & "'" ActiveWorkbook.Connections("ConnectionName").Refresh End With End Sub
【问题讨论】: