每次自动刷新时运行数据集

时间:2018-04-10 07:01:10

标签: reporting-services reportbuilder3.0

我正在使用Report Builder 3.0并且有一个数据集,当它运行时会增加表中的值,这决定了由于表达式而显示哪个子报表。

我的问题是,当我将其设置为自动刷新时,数据集查询在第一次运行报表后不会再次运行。如果我手动点击刷新但不自动,它将运行并显示另一个子报告。

我怎样才能使数据集中的查询每次无人值守时运行。

由于

1 个答案:

答案 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的表,列LoopPositionLoopMaxReportname

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个文本框的可见性,但子报告的原理相同。

https://1drv.ms/u/s!AvWOxxoIjY1UlwWbHGG8l_rzDba2