如果tablix结果为空,则返回文本

时间:2015-10-23 08:26:58

标签: reporting-services ssrs-tablix

我有一个链接到DataSet1的Tablix。

DataSet1使用以下TSQL代码

select ir.SourceRef as Account_Ref,
       rab.BalanceFromDate,
       rab.ClosingBalance Current_Balance,
       ra.Account_ID as rserial,
       ra.Current_Balance as Current_Balance


from db1..RentAccountBalance rab
left join db1..ImportReference ir on ir.EntityID = rab.AccountId and ir.EntityType='XXXX.XXX.X.XX'
left join db2..RentAccounts ra on convert(varchar(50),ra.Account_ID) = ir.SourceRef

where ir.SourceRef = '12857'
order by rab.AccountBalanceId

据我所知,没有ir.SourceRef等于12857,结果集为空。因此,我的tablix只是空白。有一种方法,如果没有返回任何结果,说“所有帐户都没问题”。而是由报告显示?

希望这很清楚?

由于

2 个答案:

答案 0 :(得分:0)

您可以尝试表达式:

--add this line to the end of query:
IF @@ROWCOUNT = 0 RAISERROR('Accounts are OK', 16, 1)

或者,如果您想检查是否根本没有数据,可以尝试在TSQL中抛出错误:

{{1}}

答案 1 :(得分:0)

如果使用存储过程,则可以在返回之前将Select语句数据插入表变量中。从中可以检查其内容,然后再将其返回到报告中。

例如,如果您填写要返回的数据表,如下所示

INSERT INTO @ReturnTable (Account_Ref, ...)
SELECT  ir.SourceRef, ...

然后,您可以使用

等命令查询其内容
IF (SELECT COUNT(*) FROM @ReturnTable) = 0
BEGIN
    INSERT INTO @ReturnTable (Account_Ref, ...)
    SELECT 'All Accounts are OK', ...
END

然后,您可以在报告中执行检查,以查看Account_Ref是否“所有帐户都正常”,如果是,则相应地显示报告。您甚至可以将整个报表的内容设置在矩形内,并将可见性设置为

的结果
=iif(First(Fields!Account_Ref.Value) = "All Accounts are OK", false, true)

您可以使用此可见性集的反转对此另一个对象(可能是信息消息)进行分层。