【问题标题】:Displaying Previous Week Date Interval in MS Report Builder在 MS Report Builder 中显示前一周的日期间隔
【发布时间】:2020-08-10 19:43:57
【问题描述】:

我正在尝试在报表生成器中显示“上周”的日期范围。例如,今天是 8/10。所以我需要显示类似:“August 02, 2020 to August 08, 2020”

如果我将以下表达式用作 SQL 查询的一部分,它就可以正常工作。但是,当我尝试将其用作报表生成器中文本框中的表达式时,会出现错误。

=format(DateAdd("week",-1,DateAdd("week",DateDiff("week",0,getdate()),0)), "MMMM dd, yyyy")

当我点击运行时会抛出一个错误,上面写着:

textrun 'Textbox14.Paragraphs[0].TextRuns[0]' 的值表达式包含错误:[BC30451] 'getdate' 未声明。由于其保护级别,它可能无法访问。

对于“week”关键字,我尝试使用双引号/单引号,不使用引号,仅使用带和不带引号/单引号的“w”。如果 "week" 或 "w" 没有被引用,错误提示 'week' is not declared...

但是,如果我运行以下选择查询,我会得到正确的日期:

SELECT format(DateAdd(week,-1,DateAdd(week,DateDiff(week,0,getdate()),0)) - 1, 'MMMM dd, yyyy')
, format(DateAdd(week,-1,DateAdd(week,DateDiff(week,0,getdate()),0)) + 5, 'MMMM dd, yyyy')

使用“-1”是因为第一个 DateAdd() 的结果返回前一个星期一。然后第二部分是“+5”来获取上一个星期六的日期。

最后,我尝试将“GetDate()”替换为“Now()”。当我这样做时,报告将运行。但是,文本框只显示 "#Error"

有什么想法吗?

【问题讨论】:

    标签: reportbuilder


    【解决方案1】:

    从 MS 论坛获得了一些帮助。以下表达式适用于报表生成器文本框。

    前一周的第一天(星期日)

    =format(DateAdd(DateInterval.Day, -7,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),"MMMM dd, yyyy")
    

    上一周的最后一天(星期六)

    =format(DateAdd(DateInterval.Day, -1,DateAdd(DateInterval.Day, 1-Weekday(today),Today)),"MMMM dd, yyyy")
    

    -马特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2016-04-19
      • 2011-11-11
      • 2017-11-14
      相关资源
      最近更新 更多