我自己已经在研究这个问题了,但是如果你想为我和社区提供一些有用的建议来检查要检查的东西,或者关于 SSRS 相关部分如何工作的指针可以帮助回答这个问题,然后继续阅读......
- 我通过 SQL Server 2008 R2 报告服务器使用 SSRS
- 当我在 VS2008 中预览我的报告(最初由另一个开发人员创建)时,我在我的报告的下拉列表中看到了正确的数据:
- 当我通过我的机器上的 http:// localhost /ReportServer_SQL2008上的报告查看器运行报告时,我看到了这一点 - 请注意显示不正确的 UID 代替下拉列表中一些最近添加的项目(例如“GRIT CARDIO”):
我在 VS2008 中重新构建了报告,并使用 http:// local-machine-name /Reports_SQL2008/ 的报告管理器手动将 .rdl 文件重新上传到我的报告服务器,但我仍然得到使用 IE 报表查看器时的不同数据。
我已经查看了用于填充程序下拉列表的数据来自哪里,使用查询分析器 - 当查看报表预览和通过报表查看器查看报表时,数据来自同一个数据库,完全使用相同的存储过程调用
从 SQL 中提取的“原始”数据在用于报告中的相关数据字段之前会进行一些处理 - 它通过使用自定义 .NET 程序集进行处理,以根据报告用户的区域设置拉回“友好”字符串。这将 VS2012 项目中保存的 .resx 文件用于自定义程序集,用于转置数据。.resx 中的条目似乎都是正确的。
我已经手动部署了自定义程序集的调试版本,该程序集将此语言环境转换为 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies(我自己的自定义程序集的默认位置)
当我在 VS2012 中通过将 VS2008 附加到调试过程并在 VS2008 中运行报告预览来针对此程序集进行调试时,会返回正确的程序名称,例如“GRIT CARDIO”
所以问题是'为什么当我在 IE 报表查看器中运行报表时没有返回这个'?
为了帮助澄清问题,这里是如何为我的“ProgramUid”参数配置“可用值”。我对为什么参数是“ProgramUid”感到困惑,但下拉列表在报告中显示为“Program”:
这是参数使用的“程序”数据集: