如何在 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') 

请确保根据业务逻辑正确放置 ')''('