如何在 SSRS 中正确设置表达式 Query.CommandText?
How to correctly set expression Query.CommandText in SSRS?
在我的 SSRS 报表生成器中,我为我的一个数据集设置了一个表达式(名称是 dsTagAttributes)。查询类型为文本。
这是查询表达式
="select m.TagName, ta.descriptor, t.[State] from MasterTags m inner join TagAttributesClassic ta on m.ID = ta.TagID inner join TagStates t on t.ID = m.StateID where m.PIServerID = @ServerID and t.[State] = @State and m.MetaData1 = @Station " & Parameters!AndOr.Value & "m.MetaData2 = @Device"
上面的查询表达式有一个参数,它被连接在 select 语句中。
参数 @AndOr
数据类型为文本,默认值为 "or",参数可见性设置为隐藏(下面的屏幕截图)。我已经设置了这个参数,因为它将用于在报告 运行 时间期间将数据集结果从 or
动态更改为 and
。
但是当我运行报告时,抛出异常说,
我的查询命令文本可能出了什么问题?
非常感谢任何帮助。
您可以 运行 针对数据源的探查器来查看查询。
我认为问题是您错过了每个 varchar 值前后的“'”(@State
、@Station
)。
我不会用那种方式来使用 OrAnd 条件
你可以像这样修改TSQL
...
AND
(m.MetaData2 = @Device AND @OrAnd = 'AND')
)
OR
(m.MetaData2 = @Device AND @OrAnd = 'OR')
请确保根据业务逻辑正确放置 ')'
和 '('
。
在我的 SSRS 报表生成器中,我为我的一个数据集设置了一个表达式(名称是 dsTagAttributes)。查询类型为文本。
这是查询表达式
="select m.TagName, ta.descriptor, t.[State] from MasterTags m inner join TagAttributesClassic ta on m.ID = ta.TagID inner join TagStates t on t.ID = m.StateID where m.PIServerID = @ServerID and t.[State] = @State and m.MetaData1 = @Station " & Parameters!AndOr.Value & "m.MetaData2 = @Device"
上面的查询表达式有一个参数,它被连接在 select 语句中。
参数 @AndOr
数据类型为文本,默认值为 "or",参数可见性设置为隐藏(下面的屏幕截图)。我已经设置了这个参数,因为它将用于在报告 运行 时间期间将数据集结果从 or
动态更改为 and
。
但是当我运行报告时,抛出异常说,
我的查询命令文本可能出了什么问题?
非常感谢任何帮助。
您可以 运行 针对数据源的探查器来查看查询。
我认为问题是您错过了每个 varchar 值前后的“'”(@State
、@Station
)。
我不会用那种方式来使用 OrAnd 条件
你可以像这样修改TSQL
...
AND
(m.MetaData2 = @Device AND @OrAnd = 'AND')
)
OR
(m.MetaData2 = @Device AND @OrAnd = 'OR')
请确保根据业务逻辑正确放置 ')'
和 '('
。