1

我正在尝试在 Report Builder 3.0 中构建一个报告,该报告将从星期一开始的每个工作日填充列标题,其中包含该周每一天的日期。然后,报告将计算这些日期每次出现在给定行条目的“接收日期”字段中的时间(参见下面的图 1)。

我想知道如何在报表生成器中创建一个过滤器或参数,即使报表每天运行,也只显示给定的当前星期的日期,然后仍然能够进行计数。

图 1:矩阵模型(日期为本周) 在此处输入图像描述

以前我使用此代码获取表格中的列以显示接下来的五个工作日(这在此处不起作用,因为我只需要那一周的工作日):

=IIF(6 - WeekDay(Today()) - X < 0, DateAdd("d", X + 2, Today()), 
DateAdd("d", X, Today()))
4

3 回答 3

0

最简单的做法是让 SQL 为您完成繁重的工作,并以最方便报告的方式准备数据。所以我们要做的是获取与当前一周的工作日相关的所有数据 - 即从本周的星期一到本周的星期五的任何数据:

SELECT PersonId, SomeDate
FROM MyTable
WHERE SomeDate >= DateAdd('d', 0 - (WeekDay(Today())-2), Today())  // Monday
AND SomeDate <=  DateAdd('d', 0 - (WeekDay(Today())-6), Today())  // Friday

然后,您只需将其输入您的矩阵,按人员和日期分组,您就可以开始了。

于 2012-12-14T00:03:51.660 回答
0

我没有可用的工具,但是如果您将过滤器添加到数据集或表中,基本上:

X > today() - day of the week --this will get the date for the sunday

X < today() + (6 - day of the week) --this will get the date for saturaday

这将确保您的数据在周一和周五之间。

于 2012-12-16T01:15:26.857 回答
0
Declare @DateFrm datetime= N'2014-11-04' 
Select 
    [EnquiryTypeValue],
    [CallerValue],
    Created  
FROM [BPU].[dbo].[vwEnquiry]  
WHERE 
    CAST(Created as date) between DATEADD(ww, DATEDIFF(ww,0,@DateFrm), 0) 
        and DATEADD(ww, DATEDIFF(ww,0,@DateFrm), 6)
于 2014-12-02T07:36:07.877 回答