MySQL + SSRS (SQL Построитель серверных отчетов) Набор данных / параметры запроса не работают - PullRequest
1 голос
/ 07 февраля 2020

В настоящее время я использую SQL Server Report Builder 2012 и подключен к моей MySQL базе данных через ODB C Connector, и что касается базового отчета, все в порядке.

Однако, я не могу заставить параметры Query / Dataset работать так, как должно быть. У меня есть несколько параметров для моего запроса, как вы можете видеть ниже (очевидно, имена таблиц и столбцов удалены):

enter image description here

Теперь проблема в том, если я оставить параметры как есть (@OfMonth, @OfDay, @OfYear) - похоже, SSRS не связывает фактические значения, переданные из объекта параметров построителя отчетов, который, я уверен, на сегодняшний день связан с ним должным образом. Даже в конструкторе предпросмотра / запросов.

Однако, если я изменю все параметры @XXXX на простые ? заполнители, это волшебным образом сработает. Это создает проблему, особенно для запросов с несколькими параметрами.

Это скриншот построителя отчетов моей работы в процессе: enter image description here

У меня нет проблем с определением объект 3 Parameter под узлом Parameter. Однако, если я пытаюсь связать их в Свойствах набора данных с указанными c @ XXXXX заполнителями, это не сработает, и отчет не сможет сгенерировать данные. Но если я заменю все @ XXXXX на ? (все они просто ?, поэтому дублируются), параметр будет передан, и отчет загрузится.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

Для соединений ODB C вам нужно использовать? вместо именованных переменных.

dba.stackexchange | Передайте параметр - SSRS в MySQL

Поле Имя параметра в свойствах набора данных должно автоматически заполниться параметром Parameter1, Parameter2, ..., чтобы соответствовать вашему запросу, но, кажется, не всегда работает. Вы можете попробовать добавить их вручную. Поскольку он работал без имени для вас, я предполагаю, что имя на самом деле не имеет значения.

Когда бы мне пришлось использовать параметр несколько раз, я объявил бы новый в запросе и использовал бы новый как @ Бэкон упомянул:

DECLARE @OfMonth INT

SET @OfMonth = ? 

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

1 голос
/ 08 февраля 2020

Использовать? в качестве переменной в вашем скрипте, затем запомните указанный c порядок '?' затем, используя указанный c порядок / расположение '?' параметры, настройте их на вкладке параметров после добавления сценария MySQL.

Пример. Скрипт.

Выбрать * из таблицы1, где столбец1 =? и column2 =?

Когда вы вставляете это в набор данных, каждый '?' будет отображаться на вкладке параметров. ? Параметр1? Parameter2

Измените это на ваши собственные параметры, тогда вам подойдет go.

...