ReportViewer查看报表出错

昵称是个什么玩意 2011-09-15 03:22:26
使用VS2010的设计了一个报表模版文件(*.rdlc),用ReportViewer查看,Debug的时候一切正常,发布程序后查看报表报错
程序是WinForm的,Microsoft.ReportViewer.WinForms.dll、Microsoft.ReportViewer.Common.dll、Microsoft.ReportViewer.ProcessingObjectModel.dll三个dll文件都有。
在线等高手指点一下...
...全文
103 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
anbin0814 2011-09-16
  • 打赏
  • 举报
回复
jiefen
junchen8 2011-09-16
  • 打赏
  • 举报
回复
你写怎么会有三个Table呢?不能用一个SQL语句把它们连在一起吗?或者用存储过程啊!!我看你这报表也不复杂啊!几条SQL语句 返回一个DataTable 就OK了,然后绑定数据集
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 junchen8 的回复:]

哦!我知道了 你把Debug 放到一个没有安装VS工具的机器上运行,是肯定会报错了,需要安装水晶报表插件CRRedist2008_x86.msi
[/Quote]
我拷的是Release下的内容,运行需要的Dll、ReportViewer都Ok。我随便做了各报表绑定一个Table就没问题,现在我的一个报表上其实有3个Table,有3各DataSet,结构见截图:
  • 打赏
  • 举报
回复
结贴咯,出错原因是系统临时文件夹没有读写权限。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 junchen8 的回复:]

你写怎么会有三个Table呢?不能用一个SQL语句把它们连在一起吗?或者用存储过程啊!!我看你这报表也不复杂啊!几条SQL语句 返回一个DataTable 就OK了,然后绑定数据集
[/Quote]

上图中3块区域分别对应三个业务实体,其中2、3是1的子实体。数据源不是用SQL查出来的,而是List<T>,不要再跟我讲用SQL搞定。
junchen8 2011-09-15
  • 打赏
  • 举报
回复
哦!我知道了 你把Debug 放到一个没有安装VS工具的机器上运行,是肯定会报错了,需要安装水晶报表插件CRRedist2008_x86.msi
大飞飞虫 2011-09-15
  • 打赏
  • 举报
回复
对应的机器要安装微软的 report viewer 对应版本的小组件的。很小
  • 打赏
  • 举报
回复
非常感谢楼上的回应,我的问题起始与报表的发布更接近一点。
我没有用水晶报表,而且报表的数据源是业务实体,报表模版、设置数据源等这些都没问题,debug时一点问题也没有。
问题出在,在一台没有安装VS的机器上运行就报错了,那肯定是有些文件没有发布了,程序所需的dll都已经发布了,依然还在报错,那我就不明白了还有哪些文件需要发布,报表模版(rdlc)文件也要发布?ReportViewer需要安装吗?
junchen8 2011-09-15
  • 打赏
  • 举报
回复
你可以对比一下,我每次这样写的,我工具是 VS2008
第一步:添加窗体就不需要我教了吧 ! 在工具箱里面找到CrystalReportViewer控件拖到窗体里面,
第二步:右键添加新项 找到数据集 DataSet1.xsd
第三步: 继续添加新项 Crystal报表 CrystalReport1.rpt 进入的时候选择空白报表
第四步:在DataSet1.xsd 双击进去 右键添加 -TableAdapter 给它命名:此名你自己定义“DsCardConsumption” 然后根据提示连接数据库 然后写SQL语句
这个 数据集就算完成了
第五步:在CrystalReport1.rpt 双击进入 左上角找到--- 字段资源管理器 --数据库字段
右键 - ——数据库字段 —— 数据库专家 - 就会弹出一个框,选择项目数据-ADO.NET 数据集
点开它找到你刚才完成的那个数据集"DsCardConsumption"然后点击确定
然后——数据库字段 下面多出一个数据集就是 DsCardConsumption 里面就会有很多字段,然后拖到CrystalReport1.rpt 详细资料里面 横着依次排开 ,托上去的时候会出现上下两个字段,下面字段显示数据库数据,上面字段显示标题。这个就完成了。
第六步:就是窗体里面下代码:
//这是查询方法 返回来的 dateset
dataSet = reportBLL.GetQueryCardConsumption(start, finish, cardNo);
//这个就是 绑定数据集 的名字“CardConsumption”
dataSet.Tables[0].TableName = "CardConsumption";
//这个就是 第五步建的CrystalReport1.rpt 名字自己改
rptCardConsumption cr = new rptCardConsumption();
cr.SetDataSource(dataSet);
crvCardConsumption.ReportSource = cr;
  • 打赏
  • 举报
回复
高手呢?????
  • 打赏
  • 举报
回复
顶......

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧