1

У меня есть эта T-SQL хранимой процедура:T-SQL дата хранимой процедуры переменной

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE dbo.datealter 
    @LastChangeDate AS date 
AS 
BEGIN 
    SELECT 
     s.[DivNo]as Division, 
     SUM(CASE WHEN s.Date = @LastChangeDate 
        THEN s.SELLINC ELSE 0 END) ActualSales 
    FROM 
     [dbo].[NewLayerReports] s 
    WHERE 
     s.BRN = 1 
    GROUP BY 
     s.[DivNo] 
END 
GO 

Когда я выполняю это все работает нормально.

Я использую эту хранимую процедуру в отчете SSRS. Когда я выполняю отчет SSRS, он просит меня ввести или выбрать дату.

Здесь всегда мне нужен календарь, чтобы показать в прошлом году текущий месяц. Например, если я запустил отчет в ноябре 2016 года, календарь должен показать ноябрь 2015 года.

Как мы можем это сделать, пожалуйста?

В параметре SSRS, если я задал значение по умолчанию, я не смог изменить значение даты. Пожалуйста, смотрите картину,

enter image description here

+0

Итак, вы хотите, чтобы значение по умолчанию для параметра «Дата последнего изменения» было в этот день, но в предыдущем году? – iamdave

+0

@iamdave Нет, я хочу, чтобы пользователь выбирал дату. Таким образом, дата будет отличаться. – user2331670

+0

. Сборщик даты сначала отобразит значение по умолчанию, а затем любую дату, которую выбирает пользователь. Вы не можете выбрать, чтобы пользователь выбрал одну дату, а затем отобразил другую, пока все еще использует сборщик дат. Если вы хотите отобразить относительную дату, см. Мой отредактированный ответ ниже. – iamdave

ответ

3

Вы можете задать значение по умолчанию для вашего параметра. Выражайте выражение в своем значении по умолчанию для параметра как Date.Now.Date.AddYears(-1). Он будет показывать тот же месяц в предыдущем году, когда вы запустите отчет.

+0

Этот ответ будет работать, если вы хотите сделать это с помощью параметра SSRS. –

2

Если вы хотите установить значение по умолчанию для параметра в SSRS, щелкните правой кнопкой мыши параметр и выберите «Свойства». На экране «Значение по умолчанию» вы можете установить выражение, которое возвращает дату.

Чтобы получить этот день в прошлом году, вы можете использовать: =today.AddYears(-1)

Хотя, если вы хотите, начало месяца необходимо также добавить дни, а также: =today.AddYears(-1).AddDays(1-today.day())


Если вы просто хотите отобразить дату относительно той, которую выбрал пользователь. В этом случае вы можете использовать приведенные выше выражения в соответствии с требованиями в элементе отчета (например, заголовок в верхней части отчета), но замените любой экземпляр today на Parameters!ParameterName.Value.

+0

Спасибо, я не хочу устанавливать дату по умолчанию. Поскольку Пользователь не может редактировать дату. Я просто хотел показать календарь в прошлом году (так что пользователю не нужно нажимать кнопку «назад» в календаре, чтобы достичь в прошлом году), и пользователю нужно выбрать дату. Я загрузил экран в свой вопрос. – user2331670

+0

@ user2331670 В параметре даты сравнения вы можете установить значение по умолчанию в соответствии с моими выражениями выше, но укажите параметр Primary. Если целью этого является просто показать даты, вы делаете это совершенно неправильно. И в отношении «Если я установил значение по умолчанию, я не смог бы изменить значение« да, вы, безусловно, можете. Вы устанавливаете поле Доступные значения по ошибке? – iamdave

+0

Да, моя главная цель - просто показать даты в прошлом году, чтобы пользователь мог выбрать их требования. Как я могу достичь этого, пожалуйста? – user2331670

Смежные вопросы