我有一个链接到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只是空白。有一种方法,如果没有返回任何结果,说“所有帐户都没问题”。而是由报告显示?
希望这很清楚?
由于
答案 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)
您可以使用此可见性集的反转对此另一个对象(可能是信息消息)进行分层。