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

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

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

4 ОТВЕТА
РЕШЕНИЕ

Похоже, вам нужно рассматривать 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. Если вы это сделаете, вы получите ошибку.

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

5
12.08.2008 23:43:15

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

select col1, col2 from table1 where col3 = ?

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

1
28.08.2008 09:48:49

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

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

0
22.12.2015 07:15:20

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

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

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

1
11.05.2012 12:49:18