У меня есть отчет SSRS, который имеет 3 набора данных, поступающих от одного источника данных. Основной набор данных представляет собой хранимую процедуру, которая объединяет некоторые данные на основе набора параметров, работающих на основе двух других наборов данных.
Основная хранимая процедура, включающая этот отчет, имеет 4 параметра. Один - идентификатор типа данных, два - даты начала и окончания, а третий - просто параметр флага. Параметр flag - это многозначный параметр, в котором я хочу передать несколько значений флага, которые также являются значениями VARCHAR.
В моей хранимой процедуре для моего параметра @Flag у меня есть общее:
WHERE [Flag] IN (@Flag)
Затем, конечно, параметр @Flag в отчете SSRS позволяет разрешить «множественные значения», которые также заполняются из запроса, извлекающего эти значения @Flag из таблицы измерений.
Моя проблема
В большинстве случаев при работе со значениями INT работает та же техника. Однако, когда я имею дело со значениями символов, это терпит неудачу. Если я выберу один флаг, отчет будет работать волшебно. Если я выберу более одного флага, он не будет правильно передавать флаги хранимой процедуре и результаты не возвращаются.
При тестировании многозначного флага непосредственно в хранимой процедуре:
WHERE [Flag] IN ('A', 'B', 'C')
Хранимая процедура работает правильно. Таким образом, проблема не в хранимой процедуре, а в том, как SSRS передает многозначные значения параметру @Flag.
Решения пробовали
Я попытался внести следующие корректировки в набор данных SSRS для этих параметров @Flag:
=join(Parameters!<your param name>.Value,",")
И этот тоже:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
Все они работают на единичных значениях, но никогда не на нескольких значениях.
Что мне здесь не хватает?
источник
=join(Parameters!<your param name>.Value,",")
) может быть добавлено в набор данных, читающий параметр, на вкладке «Параметры»: справа от перетаскивания «Значение параметра» есть кнопка «fx» для добавления выражений. -вниз.WHERE <Table>.[<Column>] IN (@MultiValueParm)
, тогда код в хранимой процедуре может бытьWHERE CHARINDEX(<Table>.[<Column>], @MultiValueParmAsText) > 0