【问题标题】:Return text if tablix results are empty如果 tablix 结果为空,则返回文本
【发布时间】:2015-10-23 08:26:57
【问题描述】:

我有一个链接到 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

据我所知,没有等于 12857 的 ir.SourceRef,结果集是空白的。因此,我的 tablix 只是空白。有没有一种方法可以在没有返回结果的情况下显示“所有帐户都正常”的文本。而是由报告显示?

希望这很清楚吗?

谢谢

【问题讨论】:

标签: reporting-services ssrs-tablix


【解决方案1】:

你可以试试这样的表达方式:

=IIF(IsNothing(Fields!FieldName.Value, "Accounts are OK", Fields!FieldName.Value))

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

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

【讨论】:

  • 您好,感谢您的回复,但我应该将表达式放在 SSRS 中的什么位置?
【解决方案2】:

如果您使用存储过程,您可以在返回之前将 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)

您可以在此之上叠加另一个对象(也许是一条信息消息),并与此可见性设置相反。

【讨论】:

  • 感谢您的回复。这对我来说似乎有点复杂,因为我从未使用过存储过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多