VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相

来源:互联网 发布:时时彩后一计划软件 编辑:程序博客网 时间:2024/05/16 05:32

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相。

公司要做一个有关水晶报表的打印,让我自己研究怎么使用,整整折磨我好几天。做了有关winform和Web两种方式的。我的开发环境是VS2010,Vs2010的水晶报表在网上出现的也不多,下面将我做报表的整体过程详细介绍如下:

首先,根据网上的提示下载,

选择和下载一个安装包:
1)SAP Crystal Reports, version for Visual Studio 2010 - 
包括了报有DLL的水晶报表文件

2)SAP Crystal Reports, version for Visual Studio 2010 - 
水晶报表部署时用到的文件

3)SAP Crystal Reports runtime engine for .NET Framework 4(32-bit)

只支持32位系统的包

4)SAP Crystal Reports runtime engine for .NET Framework 4(64-bit)

只支持64位系统的

因为我的机器是32位机器,我只下载了其中的1)和3)

其中1)是安装在本机开发环境中使用,3)发布后使用,由于使用的32位机器,发布后客户端必须安装3)这个CRRuntime_32bit_13_0.msi文件。

以上是参考http://www.cnblogs.com/dgjack/archive/2011/09/09/2172240.html

 

其次,下面做一个简单的水晶报表,

1) 在winform程序中,

要注意下面两点;

A.  运行环境不能为.NET FRAMEWORK 4.0 CLINET PROFILE,要改为.NET FRAMEWORK 4,选中项目右键属性就可以更改了;

B.在项目中加一个APP.CONFIG(这是针对WINFORM项目),如果是WEB项目就不用加了,里面有一个WEB.CONFIG;在这配置文件中加上  <startupuseLegacyV2RuntimeActivationPolicy="true">

<supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.0"/></startup>  注意,加上这么一句useLegacyV2RuntimeActivationPolicy="true"

一般winform中使用,需要3个事情操作。第一个form窗体,用来展示水晶报表的。第二个数据集.xsd文件,用来存储报表需要展示的数据,这个仅仅是有框架也可以。

 

 

一、此图就是,form窗体使用CrystalReportViewer展示水晶报表。

二、数据集步骤,创建一个数据集后,右击->添加,TableAdaptor,下面是连接字符串问题不再赘述。

 

完成数据集的样子,数据集如图:


三、rpt报表所用到的,如果是打印单页纸张,只在详细资料中布局即可。

操作步骤:文本对象可以拖动用于生成报表名称等,


线条对象就是画线,可以右击,设计对象格式,如下图


上图的需要显示的动态数字,如日期DataTime。

数据库字段,选择数据库专家,


以上完成后注意要有以下子段,这样拖动至报表.Rpt中


单页报表只在详细资料中即可

 

后台代码;调用报表传递数据

       private voidbtn_Print_Click(object sender, EventArgs e)

       {

           CR_MonitoringService cr =newCR_MonitoringService();

           DS_MonitoringService ds =newDS_MonitoringService();

           if (ID != 0)

           {

                model = service.GetModel(ID);

           }

           else

           {

                MessageBox.Show("没有数据不进行打印");

                return;

            }

           DataRow newRow;

           newRow = ds.Tables[0].NewRow();

           newRow["CompanyName"] =model.CompanyName;

           newRow["DateTime"] =model.DateTimeX;

           newRow["DutyTime"] =model.DutyTime;

………………………………..

 

            ds.Tables[0].Rows.Add(newRow);

 

           cr.SetDataSource(ds);

           Frm_View frm = new Frm_View();

           frm.CaptionName = "监控登记本";

           frm.cr = cr;

           frm.ShowDialog();

           frm.Dispose();  

            

       }

Form查看报表form中

public CR_MonitoringService cr;

 

private void Frm_View_Load(objectsender, EventArgs e)

       {

           this.Text = CaptionName;

               crystalReportViewer1.ReportSource = cr;

           crystalReportViewer1.Visible = true;

       }

注意,中间有子报表部分


相当于反面加上一个报表

在详细资料中在添加一个节,做好子报表,添加进去。母子报表应有一个对应字段,把这个字段对应上去。

母子报表的联系是在子报表处,右击,选择,更改子报表链接


2) 在web中使用方法一致,而且网上对于web的描述也有不少。这里不再描述了。

 

最后,发布

Winform 开始就说下载3)安装在客户端即可。

而web发布,拷贝这5个dll文件


到发布文件

问题出现了,在本机和只要是电脑的这种发布都没问题。而在服务器上就会出错。360浏览器下面是空白页,而在IE浏览器下面则是出现了著名的‘bobj’错误,在网上搜索的相关‘bobj’错误的答案,针对服务器都不行。

中间也曾出现两个dll冲突问题。也没有解决。

 

 类型“CrystalDecisions.Web.CrystalReportViewer”同时存在于“c:\Windows\assembly \GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304 \CrystalDecisions.Web.dll”和“c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\10.5.3700.0__692fbea5521e1304\CrystalDecisions.Web.dll”中

现在,就是这样,待我解决后,在发布出来。敬请待续……

原创粉丝点击