我尝试使用IIF
和Switch
case,但是当出现零除错误时我无法处理N/A情况.例如:
=switch(
ReportItems!Textbox54.Value = 0, "N/A",
ReportItems!Textbox54.Value <> 0, ((ReportItems!Textbox56.Value) / (ReportItems!Textbox54.Value)))
Run Code Online (Sandbox Code Playgroud)
我得到的是N/A:
ReportItems!Textbox54.Value <> 0, ((ReportItems!Textbox56.Value) / (ReportItems!Textbox54.Value)
Run Code Online (Sandbox Code Playgroud)
但是如果添加这个条件我收到错误?
我正在使用SSRS 2008 R2.
输出:
19.47%
13.85%
#Error
我有一个报告(SSRS 2008 r2),它有两个参数,@StartDate和@EndDate。两个参数都设置为类型:Date / Time,并允许使用NULL值。现在,@ EndDate默认为NULL(我正在处理SP中的NULL值),并且在我的报告中,我有一些文本框,其中显示了报告中使用的开始日期和结束日期范围。
对于显示结束日期的文本框,如果参数为null或空白,则使用一个显示当前日期的表达式,但是如果用户选择结束日期,则文本框应显示所选的结束日期。这是我遇到问题的地方。
我正在使用以下表达式显示结束日期。
=IIF(IsNothing(Parameters!EndDate.Value) OR Parameters!EndDate.Value = "", Format(Now(), "MMM - dd, yyyy"), Format(Parameters!EndDate.Value, "MMM - dd, yyyy"))
如果结束日期参数为NULL,则该表达式有效,但如果选择结束日期,则该表达式始终返回#Error
我创建了单独的文本框来尝试此表达式的不同部分。都:
Format(Now(), "MMM - dd, yyyy")
和
Format(Parameters!EndDate.Value, "MMM - dd, yyyy")
自己做得很好。这是我尝试将它们放入IIF块中以根据EndDate参数是否为null或是否为空白(错误出现时)有条件地返回一个或另一个的情况。
我正在寻找最合适和最具成本效益的Azure VM映像,该映像将允许安全访问Web应用程序,该Web应用程序与SSRS实例进行通信,以用于等式的报告方面.我还需要能够使用Web Deploy部署到此VM.
请注意,数据要求处于规模的低端 - 我目前正在我的开发盒上本地运行该东西 - 但是一旦发布它需要来自两个不同域的人可访问.
简而言之,在VM上我需要:
在我的SELECT查询中,我有:MIN(a.orderdue)
AS'最早的订单日期'
这是因为它带来了最早的订单日期,但它带来了日期格式,如:2015-06-11 11:30.000
所以我将SELECT查询修改为:
MIN (CONVERT(varchar(17),a.orderdue,103)) AS 'Oldest order date'
Run Code Online (Sandbox Code Playgroud)
这使得日期通过2015年6月11日,这是更可取的.
但我注意到这样做会影响输出:MIN函数不再返回第一个(最旧的)日期,而是一个完全不同的值.
我很感激这种类型的问题很难回答,如果没有你能够运行查询yourelf,但显然我改变日期的格式已经影响了MIN输出.有没有办法我可以修改日期格式而不发生这种情况?
谢谢
我最近发布了一个关于如何让ALL标签出现在SSRS报告中的问题."whytheq"非常友好地发布一个有效的例子.下面是具有附加维度的MDX,如果我取消注释它会给我一个错误:
查询(8,5)函数中指定的两个集具有不同的维度.
WITH
MEMBER [Due Date].[Calendar Month].[All].[YTD] AS
[Due Date].[Calendar Month].[All]
SELECT
NON EMPTY
{[Measures].[Freight]} ON COLUMNS
,NON EMPTY
{
//[Product].[Color].[Color].MEMBERS*
[Due Date].[Calendar Month].[All].[YTD],
[Due Date].[Calendar Month].[Calendar Month].MEMBERS
} ON ROWS
FROM [Adventure Works Cube];
Run Code Online (Sandbox Code Playgroud)
我知道我在.MEMBERS级别有一个Dimension,我还添加了.[YTD]维度.
我确实注意到,如果我注释掉.[YTD]并取消注释[Product]维度,这可行但我必须使用*而不是像这样的逗号.
[Product].[Color].[Color].MEMBERS*
//[Due Date].[Calendar Month].[All].[YTD],
[Due Date].[Calendar Month].[Calendar Month].MEMBERS
Run Code Online (Sandbox Code Playgroud)
是否可以将产品维度包含在YTD和Calendar Month.MEMEBERS的行中?
在唯一的行组中,我尝试使用以下表达式获取备用行颜色:
背景颜色的表达式: =IIf( RunningValue (Fields!SP.Value, CountDistinct, Nothing) MOD 2, "White", "blue")
SQL code:
select
ROW_NUMBER() OVER (ORDER BY DataDate) AS SSRSRowNumber
,datepart(dw,datadate) SSRSDateFilter
,DataDate
,SP
,sum(TMI) as TotalCI
from table
where DataDate>GETDATE()-20
group by DataDate,SP
order by 1, 2
Run Code Online (Sandbox Code Playgroud)
结果是下面的图片,上面列出的表达式有什么问题?
编辑-:解决方案
我在SSRS 2008 R2中找不到高级模式.我需要冻结Tablix中的顶行,以便在滚动报表时保持在那里.显然我可以在"高级模式"中执行此操作,但是当我单击分组窗格中组的右侧的箭头时,我没有高级模式选项.
我的数据集中有一列将返回几个不同的值.为了在报告中使用分组,我试图清理数据.在阅读了几篇帖子后,我发现这篇文章似乎与我的需求非常接近.
我设置了这样的表达式
=SWITCH(
Left(Fields!T6_TOW_BY.Value,3)="ACE","ACE WRECKER",
Left(Fields!T6_TOW_BY.Value,3)="CAR","CAR STORE",
Left(Fields!T6_TOW_BY.Value,7)="THE CAR","CAR STORE",
Fields!T6_TOW_BY.Value
Run Code Online (Sandbox Code Playgroud)
)
我预览时表达式不会抛出错误,但所有列都显示"错误"任何人都可以告诉我我在哪里出错吗?
谢谢
iif-function switch-statement reporting-services ssrs-2008-r2
我在SSRS表中的行组之一中需要自定义排序时遇到一些问题。
自定义排序顺序的逻辑-
如果行组值包含特定值,则应始终将其显示在底部,而所有其他值必须按升序显示。
例如-
假设从值列表中A,E,G,D,C,and F
,“ D”应始终显示在最后,而其他元素将按升序排序。
因此,以上列表应按以下顺序排序-
A,B,C,E,F,G,D
或者,如果元素列表为-,P,J,M,N,D,C,K
则所需的排序顺序为-
C,J,K,M,N,P and D
。
必须为在报告中显示的行组数据实现此逻辑。
如果有人可以帮助我,将不胜感激。
谢谢。
我有这个报告从存储过程中获取数据.我需要将CustomerID从多选下拉列表传递到我的报告中.
我的storedprocedure看起来像这样:
@CustomerIds varchar(500)
select *
FROM [Application].[ApplicationVersion] APPVERS
WHERE APPVERS.CustomerId IN ( @CustomerIds )
Run Code Online (Sandbox Code Playgroud)
在我的报告中,我有参数"CustomerIds",数据类型设置为Integer(我尝试使用"TEXT",但它也不起作用).该参数设置为"允许多个值"
在我的数据集定义的报告中,我将@CustomerIds定义如下:"= SPLIT(JOIN(参数!CustomerIds.Value,","),","))"(我只用SPLIT尝试过,仅JOIN并且它不起作用)
谁能帮我?
如何在 SSRS 表达式中包含多个 OR 语句?似乎给我一个错误。
这是我现在所拥有的: =IIF((Fields!PART.Value LIKE '*A2*') or (Fields!PART.Value LIKE '*A3*') or (Fields!PART.Value LIKE '*A4*') or (Fields!PART.Value LIKE '*B2*') or (Fields!PART.Value LIKE '*B3*') or (Fields!PART.Value LIKE '*B4*') or (Fields!PART.Value LIKE '*C2*') or (Fields!PART.Value LIKE '*C3*') or (Fields!PART.Value LIKE '*C4*') or (Fields!PART.Value LIKE '*D2*') or (Fields!PART.Value LIKE '*D3*') or (Fields!PART.Value LIKE '*D4*'), "TOP", "")
reportingservices-2005 reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012
ssrs-2008-r2 ×11
ssrs-2008 ×6
sql-server ×2
ssrs-2012 ×2
azure ×1
date ×1
iif-function ×1
mdx ×1
multi-select ×1
parameters ×1
sorting ×1
sql ×1
ssis ×1
ssrs-tablix ×1
t-sql ×1