Reporting services SSRS-查询参数集合中不存在的参数引用
我有一份有效的报告。我添加了一个新的数据集(报告仍然有效)。我向新数据集添加参数(报告失败)。完整的错误消息如下: 查询参数“:IP\u START\u DATE”的值表达式包含 一个错误。表达式引用参数“paramStartDate”, 参数集合中不存在的。书信 参数名称必须使用正确的大小写。 我的问题与这个非常相似()。但是我已经尝试了那里的建议(Reporting services SSRS-查询参数集合中不存在的参数引用,reporting-services,Reporting Services,我有一份有效的报告。我添加了一个新的数据集(报告仍然有效)。我向新数据集添加参数(报告失败)。完整的错误消息如下: 查询参数“:IP\u START\u DATE”的值表达式包含 一个错误。表达式引用参数“paramStartDate”, 参数集合中不存在的。书信 参数名称必须使用正确的大小写。 我的问题与这个非常相似()。但是我已经尝试了那里的建议(重新排序报告参数,将代码复制到新报告,删除“.Data”文件,参数大小写正确) 这些都不管用,我总是出错。在我看来非常奇怪的是,当我将Datase
重新排序报告参数
,将代码复制到新报告
,删除“.Data”文件
,参数大小写正确
)
这些都不管用,我总是出错。在我看来非常奇怪的是,当我将Dataset参数值配置为映射到名称时,这些值的顺序与我的报告参数部分中定义的顺序不一致。截图包括以下内容
有人知道为什么我下面截图中的下拉列表顺序不正确吗?如何解决这个问题?我相信这可能是原因。下面是我尝试过的一些东西。我还验证了源数据库中的所有字段都是大写的,并且我的SQL数据集与此匹配
谢谢,
布莱恩
见下文:
- 错误顺序映射的屏幕截图
- “ReportParameters”的XML标记屏幕截图
- “ReportParameters”的XML代码
- 我已采取步骤完全删除并重新添加参数,但它们的顺序仍然错误
<ReportParameters>
<ReportParameter Name="paramLocCode">
<DataType>String</DataType>
<Prompt>Location</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>listLocationData</DataSetName>
<ValueField>LOC_CODE</ValueField>
<LabelField>fxLabel</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="paramStartDate">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Format(Today(), "MMddyy")</Value>
</Values>
</DefaultValue>
<Prompt>Start Date "MMDDYY"</Prompt>
</ReportParameter>
<ReportParameter Name="paramEndDate">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>=Format(Today(), "MMddyy")</Value>
</Values>
</DefaultValue>
<Prompt>End Date "MMDDYY"</Prompt>
</ReportParameter>
</ReportParameters>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>2</NumberOfColumns>
<NumberOfRows>3</NumberOfRows>
<CellDefinitions>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>0</RowIndex>
<ParameterName>paramLocCode</ParameterName>
</CellDefinition>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>1</RowIndex>
<ParameterName>paramStartDate</ParameterName>
</CellDefinition>
<CellDefinition>
<ColumnIndex>1</ColumnIndex>
<RowIndex>1</RowIndex>
<ParameterName>paramEndDate</ParameterName>
</CellDefinition>
</CellDefinitions>
</GridLayoutDefinition>
</ReportParametersLayout>
根据注释中的附加信息,这似乎是参数依赖性的问题。开始日期和结束日期用于生成位置代码,然后在下拉列表中填充并用于后续数据集。如果我理解正确的话,解决方案是重新排列参数
paramlocode
将其选中现在,参数将按照它们相互依赖的顺序被引用。数据集的顺序无关紧要。您的where语句不应该在@paramStartDate和@paramEndDate之间>>吗?它是Oracle数据源。如果我使用
@
而不是:
则会收到一条错误消息,ORA-00936:缺少表达式
如果删除参数名称前面的:,会发生什么?我没有使用Oracle的经验,但逻辑表明:,只是将其标识为参数,而不是参数名称的一部分。我删除了参数名称中的:。我得到了原始错误消息,表达式引用了参数“paramStartDate”,该参数在参数集合中不存在。
。您的paramLocCode是否有多个值?您完全正确。真不敢相信我没看到。这是一个巨大的帮助,因为我在从Crystal reports转换项目中处理十几个其他报表时遇到了同样的问题。谢谢
--listLocationData
-- DEFINE ip_start_date = '070120';
-- DEFINE ip_end_date = '070120';
SELECT DISTINCT
t1.LOC_CODE
, t2.LOC_DESCR
, t2.COMPANY
, t2.STATE_CODE
, t2.TYPE
FROM
VEHICLE_COST t1
JOIN VEHICLE_LOC t2
ON t1.LOC_CODE = t2.LOC_CODE
WHERE TO_CHAR(INVOICE_DATE,'MMDDYY') BETWEEN :IP_START_DATE AND :IP_END_DATE