如何在VS2010使用水晶报表组件
答案:2 悬赏:20
解决时间 2021-03-24 15:08
- 提问者网友:逐野
- 2021-03-23 15:31
如何在VS2010使用水晶报表组件
最佳答案
- 二级知识专家网友:气场征服一切
- 2021-03-23 16:29
VS2010不在像VS2008及以前版本那样支持Crystal Report了,不过SAP公司还是很给劲的,随即发布了CR for2010的免费开放版。虽然如此,但刚上手使用的朋友们可能还是很费周折。下简述使用。
如果只是为了能够在VS2010中运行有报表的程序,则可以简单的将运行程序所需的dll引入项目即可。如果你的机器没有这些组件可以来这下载:点我。一般只需要引用
CrystalDecisions.CrystalReports.Engine.dll、CrystalDecisions.Shared.dll和
CrystalDecisions.Web.dll即可。下载后将其放入web/bin下,然后引用它们就可以了。 上述只适用于运行他人编写的有关报表的项目,做为开发者则还需进行其他工作。
VS2010不在支持Crystal report的设计,我们下载SAP公司的免费版(for VS2010)来设计即可(设计过程同在VS2008中没什么区别,只是环境独立了)。随后将我们设计的第一个报表文件crTeacherWorkLoad.rpt文件拷贝到项目App_Data中。
我们使用CryStalReportViewer控件来显示刚才设计好的rpt文件。VS2010IDE工具箱中不包含该控件,如果你安装了CR for VS2010则可以使用如下方法来显示该控件:
如果没有此控件则可以直接将此控件的代码放入所需的aspx页面中,然后在这个aspx页面内注册此控件。
控件代码如下所示:
[xhtml]view plaincopyprint?
1.
2. AutoDataBind="true"DisplayGroupTree="false"Height="50px"Width="350px"/>
注册代码放到页面头头,代码如下所示:
[xhtml]view plaincopyprint?
1. <%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304"
2. Namespace="CrystalDecisions.Web"TagPrefix="CR" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %> 如此以来再有了前面的三个dll的引用,就可以使用此控件来显示所需要的报表内容了。显示过程代码如下所示:
[c-sharp]view plaincopyprint?
1. //加载报表文件,设置报表源
2. ReportDocumentreportDocument = new ReportDocument();
3. reportDocument.Load(Server.MapPath("../../App_Data/crTeacherWorkLoad.rpt")); 4. reportDocument.SetDataSource(DtAllTeacherWorkLoad);//);//DtAllTeacherWorkLoad是查询
出来的DataTable,其字段同rpt文件字段相同 5. 6.
7. CrystalReportViewer1.ReportSource = reportDocument; 8. //将数据库信息传递给报表 9. //定义水晶报表的数据库连接信息
10. ConnectionInfoconnectionInfo = new ConnectionInfo();
11. string aservername, bDBName, cUserId, dPwd; 12. //获取服务器名、数据库名,登录名,密码
13. aservername = System.Configuration.ConfigurationManager.AppSettings["ServerName"]; 14. bDBName = System.Configuration.ConfigurationManager.AppSettings["DataBase"]; 15. cUserId = System.Configuration.ConfigurationManager.AppSettings["UserId"]; 16. dPwd = System.Configuration.ConfigurationManager.AppSettings["PassWord"]; 17. connectionInfo.DatabaseName = bDBName; 18. connectionInfo.UserID = cUserId; 19. connectionInfo.Password = dPwd;
20. connectionInfo.ServerName = aservername; 21.
22. //SetDbLoginForReport(connectionInfo); 23.
24. TableLogOnInfostableLogOnInfos = CrystalReportViewer1.LogOnInfo; 25.
26. foreach (TableLogOnInfotableLogOnInfo in tableLogOnInfos) 27. { 28.
29. tableLogOnInfo.ConnectionInfo = connectionInfo; 30. 31. }
[csharp]view plaincopyprint?
1. //加载报表文件,设置报表源 ReportDocument reportDocument = new ReportDocument();
[csharp]view plaincopyprint?
1. reportDocument.Load(Server.MapPath("../../App_Data/crTeacherWorkLoad.rpt"));
[csharp]view plaincopyprint?
1. reportDocument.SetDataSource(DtAllTeacherWorkLoad);//);
[csharp]view plaincopyprint?
1. //DtAllTeacherWorkLoad是查询出来的DataTable,其字段同rpt文件字段相
同 CrystalReportViewer1.ReportSource = reportDocument;
[csharp]view plaincopyprint?
1. //将数据库信息传递给报表
[csharp]view plaincopyprint?
1. //定义水晶报表的数据库连接信
息 ConnectionInfo connectionInfo = new ConnectionInfo(); string aservername, bDBName, cUserId, dPwd;
[csharp]view plaincopyprint?
1. //获取服务器名、数据库名,登录名,密
码 aservername = System.Configuration.ConfigurationManager.AppSettings["ServerName"];
[csharp]view plaincopyprint?
1. bDBName = System.Configuration.ConfigurationManager.AppSettings["DataBase"];
[csharp]view plaincopyprint?
1. cUserId = System.Configuration.ConfigurationManager.AppSettings["UserId"];
[csharp]view plaincopyprint?
1. dPwd = System.Configuration.ConfigurationManager.AppSettings["PassWord"];
[csharp]view plaincopyprint?
1. connectionInfo.DatabaseName = bDBName; connectionInfo.UserID = cUserId;
[csharp]view plaincopyprint?
1. connectionInfo.Password = dPwd; connectionInfo.ServerName = aservername;
[csharp]view plaincopyprint?
1. //SetDbLoginForReport(connectionInfo);
[csharp]view plaincopyprint?
1. TableLogOnInfos tableLogOnInfos = CrystalReportViewer1.LogOnInfo;
[csharp]view plaincopyprint?
1. foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
[csharp]view plaincopyprint?
1. { tableLogOnInfo.ConnectionInfo = connectionInfo; }
本文讲了三个小问题,一是如何引用所需dll显示报表文件,二是如何注册CrystalReportViewer控件,三是如何使CrystalReportViewer控件显示报表数据。至于报表文件(rpt)的设计则要学习Crystal Report 10软件的使用了!
如果只是为了能够在VS2010中运行有报表的程序,则可以简单的将运行程序所需的dll引入项目即可。如果你的机器没有这些组件可以来这下载:点我。一般只需要引用
CrystalDecisions.CrystalReports.Engine.dll、CrystalDecisions.Shared.dll和
CrystalDecisions.Web.dll即可。下载后将其放入web/bin下,然后引用它们就可以了。 上述只适用于运行他人编写的有关报表的项目,做为开发者则还需进行其他工作。
VS2010不在支持Crystal report的设计,我们下载SAP公司的免费版(for VS2010)来设计即可(设计过程同在VS2008中没什么区别,只是环境独立了)。随后将我们设计的第一个报表文件crTeacherWorkLoad.rpt文件拷贝到项目App_Data中。
我们使用CryStalReportViewer控件来显示刚才设计好的rpt文件。VS2010IDE工具箱中不包含该控件,如果你安装了CR for VS2010则可以使用如下方法来显示该控件:
如果没有此控件则可以直接将此控件的代码放入所需的aspx页面中,然后在这个aspx页面内注册此控件。
控件代码如下所示:
[xhtml]view plaincopyprint?
1.
[xhtml]view plaincopyprint?
1. <%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304"
2. Namespace="CrystalDecisions.Web"TagPrefix="CR" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %> 如此以来再有了前面的三个dll的引用,就可以使用此控件来显示所需要的报表内容了。显示过程代码如下所示:
[c-sharp]view plaincopyprint?
1. //加载报表文件,设置报表源
2. ReportDocumentreportDocument = new ReportDocument();
3. reportDocument.Load(Server.MapPath("../../App_Data/crTeacherWorkLoad.rpt")); 4. reportDocument.SetDataSource(DtAllTeacherWorkLoad);//);//DtAllTeacherWorkLoad是查询
出来的DataTable,其字段同rpt文件字段相同 5. 6.
7. CrystalReportViewer1.ReportSource = reportDocument; 8. //将数据库信息传递给报表 9. //定义水晶报表的数据库连接信息
10. ConnectionInfoconnectionInfo = new ConnectionInfo();
11. string aservername, bDBName, cUserId, dPwd; 12. //获取服务器名、数据库名,登录名,密码
13. aservername = System.Configuration.ConfigurationManager.AppSettings["ServerName"]; 14. bDBName = System.Configuration.ConfigurationManager.AppSettings["DataBase"]; 15. cUserId = System.Configuration.ConfigurationManager.AppSettings["UserId"]; 16. dPwd = System.Configuration.ConfigurationManager.AppSettings["PassWord"]; 17. connectionInfo.DatabaseName = bDBName; 18. connectionInfo.UserID = cUserId; 19. connectionInfo.Password = dPwd;
20. connectionInfo.ServerName = aservername; 21.
22. //SetDbLoginForReport(connectionInfo); 23.
24. TableLogOnInfostableLogOnInfos = CrystalReportViewer1.LogOnInfo; 25.
26. foreach (TableLogOnInfotableLogOnInfo in tableLogOnInfos) 27. { 28.
29. tableLogOnInfo.ConnectionInfo = connectionInfo; 30. 31. }
[csharp]view plaincopyprint?
1. //加载报表文件,设置报表源 ReportDocument reportDocument = new ReportDocument();
[csharp]view plaincopyprint?
1. reportDocument.Load(Server.MapPath("../../App_Data/crTeacherWorkLoad.rpt"));
[csharp]view plaincopyprint?
1. reportDocument.SetDataSource(DtAllTeacherWorkLoad);//);
[csharp]view plaincopyprint?
1. //DtAllTeacherWorkLoad是查询出来的DataTable,其字段同rpt文件字段相
同 CrystalReportViewer1.ReportSource = reportDocument;
[csharp]view plaincopyprint?
1. //将数据库信息传递给报表
[csharp]view plaincopyprint?
1. //定义水晶报表的数据库连接信
息 ConnectionInfo connectionInfo = new ConnectionInfo(); string aservername, bDBName, cUserId, dPwd;
[csharp]view plaincopyprint?
1. //获取服务器名、数据库名,登录名,密
码 aservername = System.Configuration.ConfigurationManager.AppSettings["ServerName"];
[csharp]view plaincopyprint?
1. bDBName = System.Configuration.ConfigurationManager.AppSettings["DataBase"];
[csharp]view plaincopyprint?
1. cUserId = System.Configuration.ConfigurationManager.AppSettings["UserId"];
[csharp]view plaincopyprint?
1. dPwd = System.Configuration.ConfigurationManager.AppSettings["PassWord"];
[csharp]view plaincopyprint?
1. connectionInfo.DatabaseName = bDBName; connectionInfo.UserID = cUserId;
[csharp]view plaincopyprint?
1. connectionInfo.Password = dPwd; connectionInfo.ServerName = aservername;
[csharp]view plaincopyprint?
1. //SetDbLoginForReport(connectionInfo);
[csharp]view plaincopyprint?
1. TableLogOnInfos tableLogOnInfos = CrystalReportViewer1.LogOnInfo;
[csharp]view plaincopyprint?
1. foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
[csharp]view plaincopyprint?
1. { tableLogOnInfo.ConnectionInfo = connectionInfo; }
本文讲了三个小问题,一是如何引用所需dll显示报表文件,二是如何注册CrystalReportViewer控件,三是如何使CrystalReportViewer控件显示报表数据。至于报表文件(rpt)的设计则要学习Crystal Report 10软件的使用了!
全部回答
- 1楼网友:猎杀温柔
- 2021-03-23 16:48
在vs2010中新建一个“windows 窗体应用程序”项目,在该项目中添加一个水晶报表“crystalreport1.rpt”,然后在项目上点击鼠标右键属性,将“目标框架”改为“.net framework 4”
打开app.config文件,在“startup”节点一个“uselegacyv2runtimeactivationpolicy="true"”属性
代码如下:
在form1窗体中,从工具箱拖出一个crystal report viewer控件,双击form窗体,是双击form窗体,不是crystal report viewer,在后台的form_load事件中写入如下代码:
代码如下:
private void form1_load(object sender, eventargs e)
{
string connstr = "data source=.\\sqlexpress;initial catalog=dbtest;user id=sa;password=test";
sqlconnection conn = new sqlconnection(connstr);
conn.open();
try
{
string sql = "select * from customer where email!='[email protected]'";
sqldataadapter sda = new sqldataadapter(sql, conn);
dataset ds = new dataset();
sda.fill(ds, "tmptable");
string reportpath = system.windows.forms.application.startuppath + @"\crystalreport1.rpt";
reportdocument rd = new reportdocument();
rd.load(reportpath);
rd.setdatasource(ds.tables[0].defaultview);
this.crystalreportviewer1.reportsource = rd;
}
catch (exception ex)
{
throw new exception(ex.message.tostring());
}
finally
{
conn.close();
}
}
这样就ok了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯