我正在使用VS2008编写C#.NET应用程序。我有一个SQL Server 2005数据库服务器,其中包含一个包含多个存储过程的数据库。我想在报告中显示存储过程数据。
因此,作为测试,我基于“报告 - >报告应用程序”项目类型创建了一个全新的VS2008 C#项目。
我浏览了向导,连接到数据库并从我想要使用的存储过程创建数据集。我告诉报告向导创建一个表格报告,并没有打扰对列进行分组。
当我运行应用程序时,报表查看器在顶部显示“报表1”,但没有其他内容。只有一页。
如果我按照完全相同的方法创建一个全新的应用程序,但这次从我的数据库中选择一个View或一个表,我会得到一个包含数据的多页报告,正如您所期望的那样。 / p>
那么为什么报表系统不能使用存储过程,而是使用表或视图正常工作?如果我在SQL Management Studio中执行存储过程,它就可以工作,并且它不需要参数。
答案 0 :(得分:2)
我通过不使用向导来解决这个问题。
您可以使用reportviewer控件上智能任务项下提供的报表向导,而不是步骤8& 9如果要创建表格报告等
答案 1 :(得分:0)
我记得有一段时间使用VS 2003(Crystal Reports)和SQL Server 2000时遇到问题,报表设计人员无法确定存储过程返回的字段,结果生成了空白报表。在这种情况下,原因是存储过程从SP中定义的表变量中选择了其结果。
您是否检查过是否是这种情况?
我可能已经把事情弄得太复杂了,也许原因更直接,但是当我看到你的帖子时,这就是我想到的情景。
当时我的问题的解决方案是创建一种“包装器”SP,并在表值函数中执行所有计算。然后SP从该函数中选择数据(SELECT a,b,c FROM dbo.MyFunc(@param)),这使得报表设计者能够检索字段列表。我需要SP,因为设计人员不支持参数化SELECT查询。这种解决方法虽然在一个小应用程序中实现,但我不确定这种方法如何或者是否会影响更大规模的性能。