SSRS 2008: error message saying my parameter doesn't exist but it clearly does?

I have a report that has about 10 parameters and about 10 datasets and one datasource. I typed alot but I really need help so I figured I would try and provide as much info about the problem as I could right from the start.

Let's simplify it all and pretend these are the relevant names of everything and that the report gets basic employee information:

  • Parameters
    • ID объекта: текст в формате guid или uniqueidentifier, он скрывается и передается, чтобы конечный пользователь отчета мог просматривать информацию только для своего собственного объекта; Параметр с одним значением, не пустой, не пустой, скрытый, текст
    • startDate: диапазон дат начала, скажем, я хочу, чтобы мой отчет включал данные, начиная с 1 января этого года; Параметр с одним значением, не пустой, не пустой, видимый, datetime
    • endDate: конец диапазона дат, допустим, сегодня / сейчас; Параметр с одним значением, не пустой, не пустой, видимый, datetime
    • viewOption : три жестко заданных значения (метка, значение) («Текущие сотрудники», 1) и («Прошлые сотрудники», 2) и (« Работники, перемещавшие объекты », 3); Параметр с несколькими значениями (можно выбрать все), не пустой, не пустой, видимый, текст
    • personID: на основе набора данных getListOfNames, где метка - это имя сотрудника, а значение - его идентификатор (guid / uniqueidentifier); Одиночный выбор, не null, не пустой, текст и видимый
  • Мои наборы данных
    • getListOfNames: this gets a list of people that were at the company in the provided date range at the given facility and where their employee status is in the viewOption parameter value (so it can be just one number or up to three). This is a stored procedure but I have set up it to handle the multi-valued parameter by passing it join(parameter, "~") and then separating it out in the stored proc. This works on 5 other reports.
    • getReportInfoOnSelectedPerson: main body query; after the user selects the employee they want data on, this takes that personID and the date range and fills the main table.

The problem:
SSRS сообщает, что viewOption не существует. Но я вижу это прямо там, в папке «Параметры» слева. Я вижу это, когда подхожу к вводу выражения в разделе «Параметры». В разделе Параметры! ViewOption.value нет волнистой красной линии. Но когда я пытаюсь указать его как значение параметра, используемого набором данных getListOfNames, возникает ошибка. Если я помещу его в набор данных getReportInfoOnSelectedPerson и буду использовать точно так же, SSRS с этим согласится. Wtf? Итак ... Я проверил rdl, и все в порядке (где объявлен фактический параметр, где он используется в ссылке на набор данных, все). Это всего лишь один набор данных. И у меня есть аналогичный отчет, который использует тот же набор данных, те же основные параметры, и этот отчет в порядке. Я пытаюсь установить значение параметра набора данных на 1 или что-то в этом роде, и это нормально, но когда я пытаюсь установить его на Parameter! ViewOption.value, это ошибки ... Теперь, выше я сказал, что обычно передаю сохраненный процесс a Join в параметре с тильдой ~, но я стараюсь сделать его простым и либо заставить его работать в целом (либо передавая ему первое значение многозначного параметра viewOption, либо превращая этот параметр в один выбор и просто передавая. value), но соединение тоже не работает. Все это работает для другого набора данных, который также является хранимой процедурой.

Это моя ошибка:
выше я сказал, что я обычно передаю сохраненную процедуру присоединения к параметру с тильдой ~, но я пытаюсь сделать его простым и либо заставить его просто работать в целом (либо передавая ему первое значение параметра многозначного представления, либо переключая этот параметр в один выбор и просто передает .value), но соединение тоже не работает. Все это работает для другого набора данных, который также является хранимой процедурой.

Это моя ошибка:
выше я сказал, что я обычно передаю сохраненную процедуру присоединения к параметру с тильдой ~, но я пытаюсь сделать его простым и либо заставить его просто работать в целом (либо передавая ему первое значение параметра многозначного представления, либо переключая этот параметр в один выбор и просто передает .value), но соединение тоже не работает. Все это работает для другого набора данных, который также является хранимой процедурой.

Это моя ошибка:
An error has occurred during report processing. (rsProcessingAborted) The Value expression for the query parameter ‘@viewOption’ contains an error: The expression referenced a non-existing parameter in the report parameters collection. (rsRuntimeErrorInExpression)

Which is clearly saying my parameter doesn't exist but I can SEE it... everywhere. And if I assign one of the other datasets' parameter values to the viewOption parameter it works without an error. I've checked the rdl.

I've had this problem before and it was fixed by deleting both the parameter and dataset and creating them again (for safety I renamed both of them). That didn't work this time.

I am so frustrated. Please help....

Code?

      <DataSet Name="getListOfNames">
      <Fields>
          <Field Name="personID">
              <DataField>PersonId</DataField>
              <rd:TypeName>System.Guid</rd:TypeName>
          </Field>
          <Field Name="name">
              <DataField>name</DataField>
              <rd:TypeName>System.String</rd:TypeName>
          </Field>
      </Fields>
      <Query>
          <DataSourceName>myDataSource</DataSourceName>
          <CommandType>StoredProcedure</CommandType>
          <CommandText>getListOfNames</CommandText>
          <QueryParameters>
              <QueryParameter Name="@fac">
                  <Value>=join(Parameters!fac.Value,"~")</Value>
              </QueryParameter>
              <QueryParameter Name="@bldg">
                  <Value>=join(Parameters!bldg.Value,"~")</Value>
              </QueryParameter>
              <QueryParameter Name="@unit">
                  <Value>=join(Parameters!unit.Value,"~")</Value>
              </QueryParameter>
              <QueryParameter Name="@station">
                  <Value>=join(Parameters!station.Value,"~")</Value>
              </QueryParameter>
              <QueryParameter Name="@startDate">
                  <Value>=Parameters!startDate.Value</Value>
              </QueryParameter>
              <QueryParameter Name="@endDate">
                  <Value>=Parameters!endDate.Value</Value>
              </QueryParameter>
              <QueryParameter Name="@viewOption">
                  <Value>=Join(Parameters!viewOption.Value, "~")</Value>
              </QueryParameter>
          </QueryParameters>
          <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
      </Query>
  </DataSet>



<ReportParameter Name="viewOption">
  <DataType>String</DataType>
  <DefaultValue>
    <Values>
      <Value>1</Value>
    </Values>
  </DefaultValue>
  <Prompt>View</Prompt>
  <ValidValues>
    <DataSetReference>
      <DataSetName>viewOptionQuery</DataSetName>
      <ValueField>value</ValueField>
      <LabelField>label</LabelField>
    </DataSetReference>
  </ValidValues>
  <MultiValue>true</MultiValue>
</ReportParameter>



<DataSet Name="viewOptionQuery">
  <Fields>
    <Field Name="label">
      <DataField>label</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="value">
      <DataField>value</DataField>
      <rd:TypeName>System.Int32</rd:TypeName>
    </Field>
  </Fields>
  <Query>
    <DataSourceName>flamingo</DataSourceName>
    <CommandText>select 'Other Facility' as label, 3 as value union select 'Past' as label, 2 as value union select 'Current' as label, 1 as value order by value</CommandText>
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
  </Query>
</DataSet>

This is how it is set up and getListOfNames is why the error is throw, if I change

              <QueryParameter Name="@viewOption">
                  <Value>=Join(Parameters!viewOption.Value, "~")</Value>
              </QueryParameter>

to

              <QueryParameter Name="@viewOption">
                  <Value>="1~2"</Value>
              </QueryParameter>

then it works.... or the value can be just 1 or 1~2~3

However... when I try and put join(Parameters!viewOption.value,"~") as the value for another dataset's query parameter it works and there is no error.

  <DataSet Name="getReportInfoOnSelectedPerson">
  <Fields>
    <Field Name="name">
      <DataField>name</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field> 
    <Field Name="Building">
      <DataField>Building</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="Unit">
      <DataField>Unit</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="desc">
      <DataField>desc</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field> 
  </Fields>
  <Query>
    <DataSourceName>myDataSource</DataSourceName>
    <CommandType>StoredProcedure</CommandType>
    <CommandText>Reports_BasicInfo</CommandText>
    <QueryParameters>
      <QueryParameter Name="@personID">
        <Value>=Parameters!personID.Value</Value>
      </QueryParameter>
      <QueryParameter Name="@numberINeedToAggregateData">
        <Value>=Join(Parameters!viewOption.Value,"~")</Value>
        <rd:UserDefined>true</rd:UserDefined>
      </QueryParameter>
    </QueryParameters>
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
  </Query>
</DataSet>

And I already said this, but the stored proc/dataset that throws the error uses a parameter with the same set up in about 5 other reports (I have tried copying and pasting the relevant code sections from working reports but I still get the error). So, what's wrong with this one?

28
задан Martin Smith 10 March 2011 в 00:54
поделиться