Написание запроса, который будет обрабатывать три разных метки - PullRequest
0 голосов
/ 21 марта 2019

У меня есть 3 варианта выпадающего меню. Если я выберу один вариант за раз, он будет работать, но при выборе более одного он выдаст ошибку. Три метки относятся к трем различным версиям. Все работает, но когда я выбираю более одной опции в раскрывающемся списке, происходит сбой. Нужна помощь в понимании того, почему

Три параметра Выбрать все: Report1 Report2 Доклада3

Вот мой запрос:

SELECT
  ServerInfo.Version,
  ServerInfo.Type,
  ProjInfo.ProjName,
  ServerInfo.ServName
FROM
  ProjInfo, ServerInfo
WHERE ServerInfo.Version LIKE('%'+@ServerReport+'%')

Неверный синтаксис рядом с ','.

Не удалось выполнить запрос для набора данных «Отчет». (RsErrorExecutingCommand)

Произошла ошибка при обработке отчета. (RsProcessingAborted)

1 Ответ

0 голосов
/ 21 марта 2019

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

  1. На вкладке параметрав свойствах вашего набора данных обновите выражение следующим образом:

    ="," & Join(Parameters!ServerReport.Value, ",") & ","

    Это объединит выбранные значения в одну строку, разделенную запятыми.

  2. Обновите ваше предложение WHERE следующим образом:

    @ServerReport like '%,' + ServerInfo.Version + ',%'

Это позволяет сканировать строку версии в строке параметра.Запятые на внешней стороне как объединенного параметра, так и оператора like предотвращают случайное совпадение частичных строк.

Пояснение: Все это предполагает, что вам действительно нужен оператор like.Обычно вы просто скажете:

ServerInfo.Version IN (@ServerReport)

Это позволит принять несколько значений без каких-либо других изменений.Но строки должны быть точно совпадают.

...