Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 SSRS-为什么预览中的报表下拉列表数据与报表查看器中的数据不同?_Visual Studio 2008_Reporting Services_Sql Server 2008 R2_Report - Fatal编程技术网

Visual studio 2008 SSRS-为什么预览中的报表下拉列表数据与报表查看器中的数据不同?

Visual studio 2008 SSRS-为什么预览中的报表下拉列表数据与报表查看器中的数据不同?,visual-studio-2008,reporting-services,sql-server-2008-r2,report,Visual Studio 2008,Reporting Services,Sql Server 2008 R2,Report,我自己也在研究这个问题,但是如果你想了解一些要点,为我和社区提供一些有用的建议,或者提供SSRS相关部分如何工作的建议,以帮助回答这个问题,那么请继续阅读 我通过SQLServer2008R2报表服务器使用SSRS 当我在VS2008中预览我的报告(最初由另一名开发人员创建)时,我在报告的一个下拉列表中看到了正确的数据: 当我通过位于的计算机上的报表查看器运行报表时http://localhost/ReportServer_SQL2008,我看到了这一点-请注意,下拉列表中显示了不正确的

我自己也在研究这个问题,但是如果你想了解一些要点,为我和社区提供一些有用的建议,或者提供SSRS相关部分如何工作的建议,以帮助回答这个问题,那么请继续阅读

  • 我通过SQLServer2008R2报表服务器使用SSRS
  • 当我在VS2008中预览我的报告(最初由另一名开发人员创建)时,我在报告的一个下拉列表中看到了正确的数据:

  • 当我通过位于的计算机上的报表查看器运行报表时http://localhost/ReportServer_SQL2008,我看到了这一点-请注意,下拉列表中显示了不正确的UID,而不是最近添加的一些项目(例如“GRIT CARDO”):

  • 我已经在VS2008中重新构建了报表,并且已经使用位于的报表管理器手动将.rdl文件重新上载到我的报表服务器http://local-machine-name/Reports_SQL2008/,但在使用IE report viewer时,我仍然会得到不同的数据

  • 我已经使用查询分析器查看了用于填充程序下拉列表的数据来自何处-在查看报表预览和通过报表查看器查看报表时,数据来自同一数据库,使用完全相同的存储过程调用

  • 从SQL中提取的“原始”数据在用于报表中的相关数据字段之前会得到一些处理—它通过使用自定义.NET程序集进行处理,以根据报表用户的区域设置提取“友好”字符串。这将使用VS2012项目中保存的用于自定义程序集的.resx文件来转换数据。.resx中的条目似乎都是正确的

  • 我已手动部署了自定义程序集的调试版本,该版本可将此区域设置转换为C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssembly(自定义程序集的默认位置)

  • 当我在VS2012中通过将VS2008附加到调试进程并在VS2008中运行报告预览对该程序集进行调试时,将返回正确的程序名,例如“GRIT CARDO”

所以问题是‘为什么在IE报表查看器中运行报表时不返回此信息?

为了帮助澄清问题,以下是如何为我的“ProgramUid”参数配置“可用值”。我不明白为什么参数是'ProgramUid',但在报告中下拉列表显示为'Program':

以下是参数使用的“程序”数据集:


已修复。将自定义.dll部署到:

C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssembly

允许VS2008报表预览使用自定义扩展名。要允许SSR使用自定义扩展,需要在此处部署它:

C:\Program Files\Microsoft SQL Server\MSRS10\U 50.MSSQLSERVER\ReportingServices\ReportServer\bin


而.resx文件确实会编译到.dll,它们不需要单独部署

报表服务器是否在VS2008计算机具有的相同区域设置下运行?好主意,但我认为这不会有什么区别。只有一个.resx文件包含程序的适当“友好”值,当通过报表查看器查看报表时,这里的值似乎正用于大多数程序。我只是遇到了一个问题,最近添加的新程序没有返回正确的程序名。无效id(长文本)表示原始值已被系统生成的值替换,因为找不到原始值或引用。您好Maximus-是,我认为这里发生的事情是,因为在.resx文件中找不到相应的条目(因为它们似乎需要以某种方式单独部署),所以报告只是获取下拉项的“值”,下拉项是程序的GUID。我找到了此资源,这可能会帮助我了解如何部署.resx文件: