运行 每次自动刷新数据集

Run dataset on every auto refresh

我正在使用 Report Builder 3.0 并且有一个数据集,当它 运行 时它会在 table 中递增一个值,这要归功于表达式来确定要显示的子报表。

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

如何让数据集中的查询每次无人值守运行s。

谢谢

在这里回到你之前的问题..

使用该参数似乎不起作用,因为它不会刷新。但是,您可以直接使用 dsLoop returns 的值。要进行更改,只需换出

Parameters!pLoopPos.Value=First(Fields!LPos.Value, "dsLoop")

注意:我稍微修改了dsLoop查询,为最终结果命名(LPos)。

您现在应该可以删除不再使用的参数。

更新: dsLoop 的查询应该是这样的(假设您有一个名为 myReportLoopTable 的 table,其中包含列 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

创建 table 的脚本是

CREATE TABLE [dbo].[ReportLoopTable](
    [LoopPosition] [int] NULL,
    [LoopMax] [int] NULL,
    [ReportName] [varchar](10) NULL
) 

在 table 中应该有类似

的内容
LoopPosition    LoopMax ReportName
1               3       'myReportname'

下面是 link 我创建的示例报告 RDL 来测试它。您需要将它添加到您的项目并将数据源配置为指向您的数据库然后它应该工作。它切换了 3 个文本框的可见性,但子报表的原理是相同的。

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