本帖最后由 reface 于 2011-09-15 15:24:12 编辑

解决方案 »

  1.   

    你可以对比一下,我每次这样写的,我工具是 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; 
      

  2.   

    非常感谢楼上的回应,我的问题起始与报表的发布更接近一点。
    我没有用水晶报表,而且报表的数据源是业务实体,报表模版、设置数据源等这些都没问题,debug时一点问题也没有。
    问题出在,在一台没有安装VS的机器上运行就报错了,那肯定是有些文件没有发布了,程序所需的dll都已经发布了,依然还在报错,那我就不明白了还有哪些文件需要发布,报表模版(rdlc)文件也要发布?ReportViewer需要安装吗?
      

  3.   

    对应的机器要安装微软的 report viewer 对应版本的小组件的。很小
      

  4.   

    哦!我知道了 你把Debug 放到一个没有安装VS工具的机器上运行,是肯定会报错了,需要安装水晶报表插件CRRedist2008_x86.msi
      

  5.   

    我拷的是Release下的内容,运行需要的Dll、ReportViewer都Ok。我随便做了各报表绑定一个Table就没问题,现在我的一个报表上其实有3个Table,有3各DataSet,结构见截图:
      

  6.   

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

  7.   


    上图中3块区域分别对应三个业务实体,其中2、3是1的子实体。数据源不是用SQL查出来的,而是List<T>,不要再跟我讲用SQL搞定。