我正在使用Report Builder 3.0并且有一个数据集,当它运行时会增加表中的值,这决定了由于表达式而显示哪个子报表。
我的问题是,当我将其设置为自动刷新时,数据集查询在第一次运行报表后不会再次运行。如果我手动点击刷新但不自动,它将运行并显示另一个子报告。
我怎样才能使数据集中的查询每次无人值守时运行。
由于
答案 0 :(得分:0)
请在此处回顾您之前的问题.. Can you rotate through visible sub reports in report builder 3?
看起来使用参数不能正常工作,因为它没有刷新。但是,您可以使用dsLoop
直接返回的值。要进行更改,只需换出
Parameters!pLoopPos.Value
的 =First(Fields!LPos.Value, "dsLoop")
注意:我稍微修改了dsLoop
查询,以便为最终结果命名(LPos
)。
您现在应该能够删除不再使用的参数。
<强>更新强>
dsLoop的查询应该是这个(假设你有一个名为myReportLoopTable的表,列LoopPosition
,LoopMax
和Reportname
)
DECLARE @LoopPosition int
SELECT @LoopPosition = CASE LoopPosition WHEN LoopMax THEN 1 ELSE LoopPosition + 1 END
select * FROM ReportLoopTable
WHERE ReportName = 'myReportName'
UPDATE ReportLoopTable Set LoopPosition = @LoopPosition WHERE ReportName = 'myReportName'
SELECT @LoopPosition as lPos
创建表的脚本将是
CREATE TABLE [dbo].[ReportLoopTable](
[LoopPosition] [int] NULL,
[LoopMax] [int] NULL,
[ReportName] [varchar](10) NULL
)
在表格中应该有类似
的内容LoopPosition LoopMax ReportName
1 3 'myReportname'
下面是我为测试这个而创建的示例报告RDL的链接。您需要将它添加到项目中并将数据源配置为指向您的数据库然后它应该可以工作。它切换了3个文本框的可见性,但子报告的原理相同。