gpt4 book ai didi

reporting - SSRS : Showing the correct execution time on a two page report?

转载 作者:行者123 更新时间:2023-12-04 11:58:19 25 4
gpt4 key购买 nike

我只是想知道如何在报告上显示正确的执行时间?

直到最近,我一直在报告的页脚中使用以下内容作为标签表达式:

="Execution Time: " +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds",
(
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)

不幸的是(正如预期的那样)每当我浏览到报告的第二页或导出为 PDF 时,都会重新计算此值(因此,如果我在 1 秒内呈现报告,请等待 30 秒然后导出为 pdf,执行时间将显示为 31 秒) .

在不使用上述信息的情况下显示报表执行时间的最佳方法是什么?

编辑(回答,因为我不能发布声望 <100 的帖子):

我实际上为此采取了不同的方法,因为直到现在我才注意到这里有任何回复。也许不如上面的答案好,但我想说一个简单的解决方案,可以在无法获得替代解决方案的技能的情况下实现:

如前所述,我有以下几点:
="Execution Time: " +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds",
(
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)

当您有两页报告或将报告导出为 PDF 时,就会出现这个问题。如果要生成执行时间为 5 秒的报告,然后等待 30 秒导出为 PDF,则导出报告的页脚中的执行时间显示为 35 秒。同样,如果您在报告的第一页并等待 30 秒导航到第二页。这是因为使用 System.DateTime.Now 在每次渲染(新页面或 PDF 导出)时计算执行时间。

为了避免这种情况,生成报告的时间需要存储在一个变量中(我最初打算存储上面的整个字符串,但是执行时间似乎不适用于报告变量表达式,因为我假设它们是)在最终确定之前重新初始化)。为此,首先转到报告属性并添加一个新变量。在这个例子中,我将变量命名为 GroupExecutionTime

将以下表达式添加到变量中,以便使用当前系统时间(即执行时间)对其进行初始化:
=System.DateTime.Now

完成此操作后,我们需要更新页脚标签以使用变量值而不是当前系统时间(报告变量不会在每个新页面渲染或导出时重新计算,就像页脚标签表达式一样)。
="Execution Time: " +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds",
(
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)

最佳答案

我实际上为此采取了不同的方法,因为直到现在我才注意到这里有任何回复。也许现在和上面一样最好,但我想说一个简单的解决方案,可以在无法获得替代解决方案的技能的情况下实现:

如前所述,我有以下几点:

="Execution Time: " +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds",
(
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds > 0, System.DateTime.Now.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)

当您有两页报告或将报告导出为 PDF 时,就会出现这个问题。如果要生成执行时间为 5 秒的报告,然后等待 30 秒导出为 PDF,则导出报告的页脚中的执行时间显示为 35 秒。同样,如果您在报告的第一页并等待 30 秒导航到第二页。这是因为使用 System.DateTime.Now 在每次渲染(新页面或 PDF 导出)时计算执行时间。

为了避免这种情况,生成报告的时间需要存储在一个变量中(我最初打算存储上面的整个字符串,但是执行时间似乎不适用于报告变量表达式,因为我假设它们是)在最终确定之前重新初始化)。为此,首先转到报告属性并添加一个新变量。在这个例子中,我将变量命名为 GroupExecutionTime

将以下表达式添加到变量中,以便使用当前系统时间(即执行时间)对其进行初始化:
=System.DateTime.Now

完成此操作后,我们需要更新页脚标签以使用变量值而不是当前系统时间(报告变量不会在每个新页面渲染或导出时重新计算,就像页脚标签表达式一样)。
="Execution Time: " +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).TotalSeconds < 1, "0 seconds",
(
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Hours & " hour(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Minutes & " minute(s), ", "") +
IIf(Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds > 0, Variables!GroupExecutionTime.Value.Subtract(Globals!ExecutionTime).Seconds & " second(s)", ""))
)

关于reporting - SSRS : Showing the correct execution time on a two page report?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8483402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com