Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement SSRS报告数字格式_If Statement_Reporting Services_Format_Case_Ssrs 2012 - Fatal编程技术网

If statement SSRS报告数字格式

If statement SSRS报告数字格式,if-statement,reporting-services,format,case,ssrs-2012,If Statement,Reporting Services,Format,Case,Ssrs 2012,我有一个两列的表:TYPE和VALUE,两列的值都是INT类型 我必须在SSRS分页报告中使用“+”和“-”来表示值的符号,并使用括号(即“(Value)”或不使用括号)来格式化Value.Value,具体取决于列类型。如果TYPE的值大于x,则使用括号;否则,没有括号 我通常看到用括号格式化的负值,即(1000),但在这种情况下,我不能使用该标准 下面是我寻求的四种解决方案的一个示例,以值-1000或1000为例,其类型分别为>或x和value.value>0,“(+”&value.value

我有一个两列的表:TYPE和VALUE,两列的值都是INT类型

我必须在SSRS分页报告中使用“+”和“-”来表示值的符号,并使用括号(即“(Value)”或不使用括号)来格式化Value.Value,具体取决于列类型。如果TYPE的值大于x,则使用括号;否则,没有括号

我通常看到用括号格式化的负值,即(1000),但在这种情况下,我不能使用该标准

下面是我寻求的四种解决方案的一个示例,以值-1000或1000为例,其类型分别为>或
(-1,000)
-1,000
(+1,000)
+1,000
SSRS报告的用户界面似乎允许自定义值和格式表达式。在本例中,我创建的是一个自定义值表达式,但不是一个用于格式的自定义表达式(解决方案可能会同时使用这两种格式组合自定义表达式)

这是我的尝试,它不起作用(对象错误)

=iif(TYPE.value>x和value.value>0,“(+”&value.value&”),
iif(TYPE.value>x和value.value<0,(-“&*value.value&”),
iif(TYPE.value

欢迎任何指导。Tks

表达式中有一些输入错误,例如,您需要引用
字段
集合(
字段!Value.Value
等),出于某种原因,其中有一个
*

无论如何,有一种更简单的方法可以做到这一点

不更改值表达式,只更改文本框的格式表达式

在数字格式字符串中,您可以指定正数和负数的显示方式,因此真正需要确定的是值是否大于X

我使用以下数据集查询创建了一些示例数据

DECLARE @t TABLE (X int, Value int)

INSERT INTO @t VALUES
(1,2),
(3,2),
(-10, -11),
(-2234, -1234)

SELECT * FROM @t
然后我加了一张桌子。前两列显示没有格式的实际数字

第三列显示格式化的输出

报告设计如下所示(注意,第3列显示[Value],因为我没有对值表达式进行任何更改

=IIF(
Fields!Value.Value > Fields!X.Value,
"(+#,0);-#,0",
"+#,0;(-#,0)"
)

在第三个单元格的
Format
属性中,我使用了以下表达式

=IIF(
Fields!Value.Value > Fields!X.Value,
"(+#,0);-#,0",
"+#,0;(-#,0)"
)
这就是

“如果值>X,则将括号中的+ve数字格式化为+号, 和-ve不带括号和减号的数字,否则,格式为+ve 带加号的数字和带-号的括号中的-ve数字”

这将提供以下输出


表达式中有一些输入错误,例如,由于某种原因,您需要引用
字段
集合(
字段!Value.Value
等),其中包含一个
*

无论如何,有一种更简单的方法可以做到这一点

不更改值表达式,只更改文本框的格式表达式

在数字格式字符串中,您可以指定正数和负数的显示方式,因此真正需要确定的是值是否大于X

我使用以下数据集查询创建了一些示例数据

DECLARE @t TABLE (X int, Value int)

INSERT INTO @t VALUES
(1,2),
(3,2),
(-10, -11),
(-2234, -1234)

SELECT * FROM @t
然后我添加了一个表,前两列显示的是实际的数字,没有格式

第三列显示格式化的输出

报告设计如下所示(注意,第3列显示[Value],因为我没有对值表达式进行任何更改

=IIF(
Fields!Value.Value > Fields!X.Value,
"(+#,0);-#,0",
"+#,0;(-#,0)"
)

在第三个单元格的
Format
属性中,我使用了以下表达式

=IIF(
Fields!Value.Value > Fields!X.Value,
"(+#,0);-#,0",
"+#,0;(-#,0)"
)
这就是

“如果值>X,则将括号中的+ve数字格式化为+号, 和-ve不带括号和减号的数字,否则,格式为+ve 带加号的数字和带-号的括号中的-ve数字”

这将提供以下输出


非常感谢,艾伦。你的方法解决了这个问题——是的,我确实留下了空白的必要代码(即字段!)——我的错误。我发现额外的格式设置——添加第三段将零变成破折号——是一种额外的效果。这是最终产品,非常感谢你。``=iif(Fields!VALUE.VALUE>X),(#,0)(#,0)——“,“#,0;-#,0;-#,0;-”=iif(Fields!VALUE.VALUE>X),(++,0);(-#,0)-”,“++,0;-#,0;-#,0;-”,一个添加的公式,包括“+”``谢谢你的方法,艾伦。是的,我留下了空白的必要代码(即字段!)-我的错误。我发现额外的格式——添加第三段将零变成破折号——是一种额外的感觉。这是最终产品,非常感谢您。``=iif(Fields!VALUE.VALUE>X,“(#,0);(#,0)-”,“#,0;-#,0-”=iif(Fields!VALUE.VALUE>X,”(++,0)-”,添加了一个公式```