Использование параметров в службах MS Reporting Services (SQL Server 2008) для источника данных ODBC - PullRequest
1 голос
/ 13 августа 2008

Я пишу отчет в Visual Studio, который принимает пользовательский параметр ввода и работает с источником данных ODBC. Я хотел бы написать запрос вручную и сделать так, чтобы службы отчетов заменяли часть предложения where значением параметра перед отправкой его в базу данных. Кажется, что происходит то, что @parmName, который, как я предполагаю, будет заменен, фактически отправляется как часть оператора SQL. Я где-то пропустил настройку конфигурации или это просто невозможно?

Я не использую опцию фильтра в инструменте, потому что это, кажется, возвращает полный набор данных из базы данных и выполняет фильтрацию на SQL Server.

Ответы [ 4 ]

5 голосов
/ 13 августа 2008

Похоже, вам нужно будет рассматривать оператор SQL как выражение. Например:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

Если предложение where является строкой, вам необходимо выполнить следующее:

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

Внимание! Не используйте разрывы строк в выражении SQL. Если вы это сделаете, вы получите ошибку.

Привет, Холла, если тебе понадобится дополнительная помощь.

1 голос
/ 11 мая 2012

Обнаружена та же проблема при попытке запроса базы данных доступа через ODBC.

Мой оригинальный запрос: SELECT A.1 FROM A WHERE A.1 = @parameter привел к ошибке. Изменено на: SELECT A.1 FROM A WHERE A.1 = ?.

Затем необходимо сопоставить параметр запроса с параметром отчета.

1 голос
/ 21 августа 2008

Разве ODBC не использует старое "?" синтаксис для параметров? Попробуйте это:

select col1, col2 from table1 where col3 = ?

Тогда порядок ваших параметров становится важным, но он менее уязвим для внедрения SQL, чем простое добавление значения параметра.

0 голосов
/ 26 августа 2008

Я немного запутался в этом вопросе, если вы ищете простое использование параметров, то обозначение будет: *paramName*, однако, если вы хотите структурно изменить предложение WHERE (как вы могли бы использовать sql + с помощью?) тогда вы действительно должны использовать собственный код в отчете, чтобы определить функцию, которая возвращает требуемый sql для запроса.

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

...