我正在尝试从SQL查询中提取参数,以便为SSRS报告构建我的xml。我希望能够将我的SQL复制/粘贴到Excel中,查看代码并查找“@”的所有实例以及附加到其上的相应参数。这些参数最终将被复制并粘贴到另一张纸上以供进一步使用。例如:
where DateField between @FromDate and @ToDate
and (BalanceFiled between @BalanceFrom and @BalanceTo
OR BalancdField = @BalanceFrom)
我知道我可以使用Instr
在一行中找到第一个'@'的起始位置,但是我如何去提取参数名称的其余部分(这会有所不同)以及该示例的前两行,找到第二个参数并提取它的变量长度?我也尝试使用.Find
方法,我已经能够复制整行但不仅仅是参数。
答案 0 :(得分:1)
我可能会这样解决这个问题:
我的用户定义函数如下所示:
Public Function GetParameters(ByRef rsSQL As String) As String
Dim sWords() As String
Dim s As Variant
Dim sResult As String
'remove parentheses and split at space
sWords = Split(Replace(Replace(rsSQL, ")", ""), "(", ""), " ")
'find parameters
For Each s In sWords
If Left$(s, 1) = "@" Then
sResult = sResult & s & ", "
End If
Next s
'remove extra comma from list
If sResult <> "" Then
sResult = Left$(sResult, Len(sResult) - 2)
End If
GetParameters = sResult
End Function