Как сохранить два набора данных (группирование по каждому набору данных) на одной странице - PullRequest
0 голосов
/ 24 марта 2020

У меня есть требование, по которому мне нужно показывать календарь для каждого месяца с указанием количества дней в году, и ниже этого показателя мне нужно показывать счетчик для различных услуг в этом конкретном месяце. Для этого я создал два набора данных 1> Для одного календаря 2> Различные услуги для каждого месяца. Теперь я не уверен, как сохранить эти два набора данных на одной странице, значит предположить, что это январь месяц, поэтому мне нужно показать календарь за январь месяц и общее количество услуг за январь месяц на одной странице, а на второй странице это будет покажите эти два месяца в феврале, и он включится go. Количество месяцев контролируется параметром.

Что я сделал сейчас? Для первого набора данных есть группа, и я поставил разрыв страницы после группы. И для 2-го набора данных у меня есть группа, и после группы ставится разрыв страницы.

Пожалуйста, предложите, как я могу разместить эти наборы данных на одной странице (обе группы имеют группу на основе месяца).

Заранее спасибо.

С уважением, Субрат

1 Ответ

0 голосов
/ 24 марта 2020

Вот краткий пример.

ПРИМЕЧАНИЕ: Я использую образец базы данных AdventureWorks здесь ..

Сначала мы создадим подотчет. Это будет стандартный отчет, но в нашем случае он даст результаты только за один месяц. В этом примере я передаю только номер месяца в качестве параметра, но, очевидно, вам может потребоваться изменить его, чтобы передать год и / или другую информацию.

Я создал новый отчет с именем Month Sub Report Я создал два наборы данных, которые дадут мне продажи по лицам и продажи по территориям за тот же месяц. Я использовал следующие запросы:

-- query for dsSalesByPerson
  select MONTH(OrderDate) as MonthNumber, SalesPersonID, p.LoginID , SUM(TotalDue) as Amount 
    from Sales.SalesOrderHeader s 
    join HumanResources.Employee p on s.SalesPersonID = p.BusinessEntityID
  where datepart(yy, OrderDate) = 2013
  and MONTH(OrderDate) = @MonthNumber
  GROUP BY MONTH(OrderDate), SalesPersonID, p.LoginID

-- query for dsSalesByTerritory  
select MONTH(OrderDate) as MonthNumber, t.Name as Terrotory , SUM(TotalDue) as Amount 
    from Sales.SalesOrderHeader s 
    join sales.Customer c on s.CustomerID = c.CustomerID
    join sales.SalesTerritory t on c.TerritoryID = t.TerritoryID
where datepart(yy, OrderDate) = 2013
and MONTH(OrderDate) = @MonthNumber
GROUP BY MONTH(OrderDate), t.name

Примечание Оба они используют одно и то же имя параметра с ТОЧНЫМ написанием, включая регистр. При создании наборов данных параметр будет создан автоматически. Если имя одинаково для обеих баз данных, будет создан только 1 параметр, который нам нужен.

Затем я добавил две простые таблицы и текстовое поле, похожее на заголовок (реальные заголовки не работают в вложенные отчеты)

Окончательный дизайн выглядел следующим образом.

enter image description here

Когда я запускаю вложенный отчет, я получаю что-то вроде этого.

enter image description here

Сохраните и закройте этот дизайн отчета ....

Затем создайте новый отчет, в этом примере я назвал его Month Master Report .

Я создал набор данных с именем dsMonths со списком месяцев в (MonthNumber и MonthName), который мы будем использовать в нашем основном параметре отчета, чтобы позволить пользователям выбирать месяцы, о которых они хотят сообщить.

Я установил доступные значения, чтобы они указывали на наш запрос набора данных dsMonths, и установил его, чтобы разрешить множественные значения (оставьте тип в виде текста)

Далее создайте другой набор данных с именем dsMain. Запрос для этого набора данных должен возвращать уникальный список номеров месяцев из вашей базы данных, поэтому он может выглядеть примерно так:

select DISTINCT MONTH(OrderDate) as MonthNumber 
    from Sales.SalesOrderHeader s 
where datepart(yy, OrderDate) = 2013
and MONTH(OrderDate) IN (@Months)
ORDER BY MONTH(OrderDate) 

Примечание: Здесь мы используем IN, так как передаем список @Months in.

Затем вставьте таблицу

Установите для свойства Набор данных таблицы значение dsMain

Затем удалите строку заголовка и все столбцы, кроме 1 .

На вашем столе должна остаться только одна ячейка. В этой ячейке щелкните правой кнопкой мыши и вставьте вложенный отчет.

Щелкните правой кнопкой мыши заполнитель вложенного отчета и выберите свойства.

Установите вложенный отчет, который использовался в качестве ранее созданного вложенного отчета (т. Е. * 1062). *)

Перейдите на вкладку параметров и нажмите «Добавить». Выберите «MonthNumber» из раскрывающегося списка и поля monthnumber из выпадающего списка значений.

enter image description here

Далее дважды щелкните «(Подробно ) "группа строк nuder главного окна дизайна, нажмите" Разрывы страниц "и выберите" Между каждым экземпляром "

НАКОНЕЦ! Переместите таблицу в верхний левый угол страницы и прогуляйте тело отчета, чтобы вокруг него не было много места (или это может вызвать неожиданные разрывы страниц)

Когда мы запускаем отчет и выбираем несколько месяцев мы получаем следующее, с каждым выбранным месяцем на новой странице (я только показываю последнюю страницу на этом изображении)

enter image description here

Надеюсь, что это будет дать вам достаточно, чтобы решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...