2012-12-13 5 views
1

Я пытаюсь создать отчет в построителе отчетов 3.0, который будет заполнять заголовки столбцов каждую рабочую неделю, начинающуюся в понедельник, с датами каждого дня на этой неделе. Затем отчет будет подсчитывать каждый раз, когда эти даты появятся в поле «Полученные даты» для данной записи строки (см. Рис. 1 ниже).Матрица фильтра по текущей неделе

Мне интересно, как создать фильтр или параметр в построителе отчетов, чтобы отображать только даты текущей недели, даже если отчет работает ежедневно, а затем все еще может выполнять подсчет.

Рисунок 1: Матрица Макет (Даты текущей недели) enter image description here

Раньше я использовал этот код, чтобы получить столбцы в таблице, чтобы показать следующие пять рабочих дней (что Безразлично» т работать здесь, потому что мне нужны рабочие дни только для этой недели):

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

ответ

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 

Тогда вы просто кормите это в вашу матрицу, группировку на человека и дату, и вам хорошо идти.

+0

Если я использую построитель запросов, будут ли эти условия добавлены в качестве фильтров в построителе отчетов 3.0? Я не могу понять, как редактировать SQL pull. – webdevanddata

0

Я не получил имеющийся инструмент, но если добавить фильтр к набору данных или таблице essentually:

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 

Это обеспечит ваши данные между понедельником и пятницы.

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)