У меня есть несколько поисковых запросов (по одному на каждое подразделение штата), и первый работает, но не другие, и я не могу понять, почему. Любые предложения, где искать.

Во фрагменте кода ниже первый работает, а второй - нет. Я передаю оба (на самом деле их 6) в качестве параметров функции пользовательского кода, но отчет показывает #Error в текстовом поле после того, как я нажимаю кнопку «Просмотреть отчет». Я разделил поиск на фиктивные текстовые поля, первое работает, второе показывает #Error.

=Lookup(Parameters!NDEVDivisionalModelID.Value, Fields!DivModel_ID.Value, Fields!DivModel_Name.Value, "NDEVExtras")

=Lookup(Parameters!NSWDivisionalModelID.Value, Fields!DivModel_ID.Value, Fields!DivModel_Name.Value, "NSWExtras")

Параметры и запрос, стоящие за наборами данных, идентичны, за исключением, очевидно, фильтра по состоянию, и оба параметра связываются там Доступные значения с соответствующим набором данных.

Для NSW запрос набора данных:

SELECT 0 AS DivModel_ID,
       NULL AS FinYearEnd,
       '(None)' AS DivModel_Name
WHERE  'NSW' NOT IN (@StateDivisionID)

UNION

SELECT D.ID AS DivModel_ID, 
       D.FinYearEnd, 
       D.Name AS DivModel_Name
FROM DivModel D INNER JOIN States S ON D.StateID = S.ID
WHERE s.Name = 'NSW' AND 
      s.Name IN (@StateDivisionID) AND
      D.FinYearEnd <> -1
ORDER BY FinYearEnd DESC, DivModel_Name

Здесь нет ничего сложного, и я не вижу своей, наверное, глупой ошибки. Если это была орфографическая ошибка, скажем, то я уверен, что отчет не сохранится, поэтому это должно быть что-то другое.

0
Glen 6 Янв 2016 в 06:16

2 ответа

Лучший ответ

Я нашел ответ, я просто забыл установить тип данных для других параметров, которые он оставил как Text, должен был быть Integer, поскольку мои идентификаторы являются целыми числами.

0
Glen 6 Янв 2016 в 22:31

Глядя на ваш код, предложение where не имеет смысла:

WHERE s.Name = 'NSW' AND 
      s.Name IN (@StateDivisionID) AND 
      D.FinYearEnd <> -1

У тебя есть:

s.Name = 'NSW'

Но и

s.Name IN (@StateDivisionID)

Если у вас есть следующее:

WHERE (s.Name = 'NSW' OR 
          s.Name IN (@StateDivisionID)) AND 
          D.FinYearEnd <> -1

Это если вы хотите включить NSW во все результаты поиска. В противном случае я бы сделал следующее:

WHERE     s.Name IN (@StateDivisionID) AND 
          D.FinYearEnd <> -1
0
Kamran Farzami 6 Янв 2016 в 16:50