我有一个包含大约10个参数和大约10个数据集和一个数据源的报告。我输入了很多,但我真的需要帮助,所以我想我会尝试并提供尽可能多的关于问题的信息,因为我可以从一开始就对。SSRS 2008:错误消息说我的参数不存在,但它显然做?
让我们简化了这一切,并假装这就是一切有关名称和该报告得到基本员工信息:
- 参数
- facilityID:文本的GUID或唯一标识符的格式,这被隐藏并传入,以便报告的最终用户只能查看他们自己设施的信息;单值参数,非空白不为空,隐藏,文本
- startDate:开始日期范围,假设我希望我的报告包含今年1月1日开始的数据;单值参数,非空白不为空,可见,日期时间
- endDate:结束日期范围,假设是今天/现在;三个硬编码值(标签,值)(“当前雇员”,1)和(“过去雇员”,2)和(“雇员移动设施“,3);多值参数(因此全选为选项),非空白,非空,可见,文本
- personID:基于数据集getListOfNames,其中标签是员工姓名,值是他们的personID(guid/uniqueidentifier) ;单选择,不为空,不为空,文字和显示
- 我的数据
- getListOfNames:此得到的那名在该公司所提供的日期范围在给定的设施和那里的人的名单他们的员工状态在viewOption参数值中(因此它可以只是一个数字或最多三个)。这是一个存储过程,但是我已经通过传递join(参数,“〜”)来设置它来处理多值参数,然后在存储过程中将其分离出来。这适用于其他5份报告。
- getReportInfoOnSelectedPerson:主体查询;在用户选择他们想要数据的员工之后,这将采用该personID和日期范围并填充主表。
问题:
SSRS说viewOption不存在。但是我在左侧的Parameters文件夹中看到它。我在参数下输入表达式时看到它。在Parameters!viewOption.value下没有波浪形的红线。但是,当我尝试将其作为getListOfNames数据集使用的参数的值时,它会出错。如果我把它放在getReportInfoOnSelectedPerson数据集中并以完全相同的方式使用它,那么SSRS就可以。跆拳道?所以...我检查了rdl,一切正常(在声明实际参数的地方,在数据集引用中使用的地方,所有内容)。这只是一个数据集。我有一个类似的报告,使用相同的数据集,相同的基本参数和报告是好的。我尝试将数据集参数的值设置为1或者其他值,但是当我尝试将其设置为Parameter!viewOption.value时,它的错误.....现在,上面我说我通常将存储过程传递给Join在参数与波浪号〜但我试图保持简单,或者让它只是在一般工作(或者通过传递多值viewOption参数的第一个值或将该参数转换为一个单一的选择,只是传递。值),但连接也不起作用。所有这些都适用于其他数据集,这也是一个存储过程。
这是我的错误:
报告处理过程中发生错误。 (rsProcessingAborted)查询参数'@viewOption'的值表达式包含一个错误:该表达式在报告参数集合中引用了一个不存在的参数。 (rsRuntimeErrorInExpression)
这很明显说我的参数不存在,但我可以看到它......无处不在。如果我将其他数据集的参数值之一分配给viewOption参数,它将无误地工作。我检查了rdl。
我以前遇到过这个问题,并且通过删除参数和数据集并重新创建它们(为了安全起见,我重命名了它们),修复了它。这次不起作用。
我很沮丧。请帮忙....
密码?
<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>
这是它是如何建立和getListOfNames就是为什么错误是扔了,如果我改变
<QueryParameter Name="@viewOption">
<Value>=Join(Parameters!viewOption.Value, "~")</Value>
</QueryParameter>
到
<QueryParameter Name="@viewOption">
<Value>="1~2"</Value>
</QueryParameter>
然后工程....或值可以只是1或1〜2〜3
但是,当我试着把join(参数!viewOption.value,“〜”)作为其他值r数据集的查询参数有效,并且没有错误。
<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>
而且我已经说过这一点,但存储的过程/数据集引发错误使用同一套高达约5其他报告(我试图复制并从工作报告粘贴相关代码段的参数但我仍然得到错误)。那么,这个有什么问题?
我知道你说你之前已经尝试过这一点,但我在报告服务有similiar问题。我必须从头开始尝试,它似乎工作,有时似乎是越野车。同样,总是从SQL Server运行你的存储过程来看看它们是否在工作到RS之前工作。最后,由于某种原因,在以后的日期添加其他参数时,报告的后台代码不会更新,您必须手动输入代码。 +1虽然为深入的细节。 – JonH 2011-03-10 01:02:53
我刚刚发布了一些“答案”......这份报告过于详细和复杂,只是重新开始,所以我只是复制了代码,而且似乎很有用。不过,我真的很想知道为什么会发生这种情况。我总是确保存储过程的工作,并重新使用其中的一些...我也学会了总是检查SSRS背后的代码。 – 2011-03-10 19:23:30