Ошибка, которую вы получаете, как вы и думали: вы пытаетесь установить значение по умолчанию для ReportingPeriod
, ссылаясь на значение ReportingPeriod
, что невозможно, поскольку оно еще не существует.
Поскольку вы ищете только целое число от 1 до 45, пользовательский код, по моему мнению, будет излишним.Вы можете выполнить то, что вы пытаетесь сделать, просто установив Доступные значения параметра.Единственным недостатком по сравнению с пользовательским кодом является то, что пользователь не сможет ввести значение в текстовое поле.Вместо этого им придется выбрать его из выпадающего списка.
Поскольку вы знаете, что хотите разрешить только 1-45, вы можете указать каждое значение, чтобы разрешить его по отдельности.Но я бы предложил получить доступные значения из запроса.
Чтобы получить доступные значения из запроса, вам нужно будет создать другой набор данных, содержащий только те значения, которые вы хотите разрешить для этого параметра.Поэтому вам понадобится набор данных, который содержит целые числа от 1 до 45. Если у вас есть таблица чисел, это будет тривиально, просто что-то вроде select top(45) * from NumbersTable
.Но если нет, вы можете написать простой запрос для достижения этой цели.Я уверен, что этот запрос не будет абсолютно лучшим способом, но он будет работать:
select top(45)
rn = row_number() over(order by object_id)
from
sys.all_columns
Затем вы перейдете к свойствам параметра и в доступных значениях выберите «Получить значения из запроса».", установите для набора данных тот, который вы только что создали, и установите для полей значений и меток единственный столбец из этого набора данных.