水晶报表技术(4)——C#.Net的WinForm中使用水晶报表

简介:
1)在使用自带的水晶报表时,请注册,否则只能使用30
2)
使用CrystalReportViewer进行预览
CrystalReportViewer
控件允许在应用程序中查看 Crystal ReportReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。
(1)
打开工具箱,并将一个 CrystalReportViewer 拖到窗体上,我们命名为rptVew  
(2)
通过拖放操作将 Windows 窗体查看器调整到希望的大小并将其移动到所需位置。
 
(3)
当运行应用程序时,报表将显示在查看器中。

3)
创建新报表
(1)
指向添加,单击添加新项  
(2)
添加新项对话框中,从模板区域选择 Crystal Report,将报表命名为rptClient,单击打开
 
(3)
 Crystal Report 库中,选择下列选项之一:
 
A.
使用报表专家 -> 指导您完成报表的创建过程,并将您的选择添加到 Crystal Report Designer
 
B.
作为空白报表 -> 打开 Crystal Report Designer
 
C.
来自于现有的报表 -> 创建新报表,它与指定的另一报表设计相同。
 
注意 Crystal Report 库包含许多专家,可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。

(4)
单击确定按钮。  
如果选择使用报表专家,便会出现报表专家对话框,并带有数据资源管理器。为每个文件夹选择所需数据,完成报表专家选项卡界面上的操作,然后单击完成来访问 Crystal Report Designer 和您的报表。

(5)
是否需要动态设置数据源?
Crystal Reports 
通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。拉和推模型,为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。  
拉模型pull:在拉模型中,驱动程序将连接到数据库并根据需要将数据进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型push:相反,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。  
4)
 ADO.NET 数据集制作报表

从数据库创建数据集对象
(1)
在项目中新建一个架构文件:  
在解决方案资源管理器中,右击项目名,指向添加,然后单击添加新项。在添加新项对话框的类别区域,展开文件夹,然后选择数据 模板区域选择数据集 接受默认名称 Dataset1.xsd 这就创建了一个新的架构文件 (Dataset1.xsd),以后将用它来生成强类型数据集。该架构文件将显示在 ADO.NET 数据集设计器中。
 
(2)
指定数据库位置:
 
在服务器资源管理器中,右击数据连接并选择添加连接。在数据链接属性对话框中,单击提供程序选项卡,然后选择一个提供程序(例如 Microsoft OLE DB Provider for SQL Server)。 单击连接选项卡,然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。 单击确定按钮。 此时,您的数据库及其表和字段就出现在服务器资源管理器的数据连接节点下面。
 
(3)
在解决方案资源管理器中,双击 Dataset1.xsd (如果它尚不是活动视图)。 Dataset1.xsd 现在应显示在数据集选项卡中。
 
(4)
若要为数据集建立架构,请将需要的表从服务器资源管理器中拖动到 Dataset1.xsd 数据集选项卡上。
 
(5)
单击保存 Dataset1.xsd”来保存“Dataset1.xsd”文件。
 
(6)
生成菜单上,单击生成为项目生成数据集对象。
 
ADO.NET 
数据集对象提供数据的描述,从它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的数据库专家 ADO.NET 数据集对象添加表。 请在使用报表专家创建新报表时调用数据库专家。或者,要从一个已经使用 ADO.NET 建立好的报表中访问数据库专家,请在 Report Designer 中右击,指向数据库,然后单击添加/删除数据库。将报表连接到 ADO.NET数据集对象
 
(1)
数据库专家中,展开项目数据文件夹。
 
(2)
展开“ADO.NET 数据集文件夹。
 
(3)
选择所需数据集对象。
 
例如,如果当时使用的是从项目“WindowsApplication1”的架构文件“Dataset1.xsd”中生成的数据集对象,则应该选择“WindowsApplication1.Dataset1” 选择要向报表中添加的表,和使用其他数据源一样。
 

5)
动态改变数据源的代码

DataSet dsdataSet = new DataSet();
rptClient() oRpt = new rptClient(); //
已建立的报表 rptClient
OleDbDataAdapter da=new OleDbDataAdapter("select * from TableName",conn);
da.Fill(dsdataSet,"TableName");
//
使用报表引擎对象模型将填充的数据集,传递给报表

oRpt.SetDataSource(dsdataSet.Tables(0));
//
将带有数据的报表对象绑定到 Windows 窗体查看器,rptVewCrystalReportViewer控件)
rptVew.ReportSource = oRpt;
注意 FillDataSet 方法可连接到指定的数据库,提取数据,然后断开数据库连接。如果您希望将数据库中的多个表添加到报表中,请使用 SQL JOIN 语句将这些表联接在一起;然后在 FillDataSet 方法中指定一个结果表。

6)
创建主从报表
在报表中,有许多报表是主从表结构,比如订单与订单商品明细,订单是一个表中的一条记录,而分录是另一个表中的多条记录,两个表通过一个字段关联起来,这种报表可利用其分组功能实现。
(1)
新建一个工程
(2)
FORM1中添加一个CrystalReportViewer控件
(3)
在服务噐资源管理器中连接到SQL SERVER 2000上的Northwind数据库
(4)
添加一个数据集Dataset1,将服务器资源管理器中的Orders Order Details加入到数据集中。
(5)
添加一个水晶报表,使用报表专家,在项目数据中选择“ADO.NET数据集,插入表Orders Order Details链接中是关联字段的链接,在字段中选择要显示的主表和明细表的字段,组中选择分组依据为OrdersOrdersID字段,总计,图表,选择(可进行筛选),样式(可设置报表标题),可自行设置。设置完后,点击完成。
(6)
在报表设计器中调整需要显示的字段的位置、宽度等。
(7)
在窗口中添加代码。
public PrintForm()
{
InitializeComponent();

OleDbConnection conn=new OleDbConnection("data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa");
Dataset1() ds = new Dataset1();

OleDbDataAdapter da1=new OleDbDataAdapter("select * from orders",conn);
da1.Fill(ds,"orders");

OleDbDataAdapter da2=new OleDbDataAdapter("select * from [Order Details]",conn);
da2.Fill(ds,"Order Details");

CrystalReport1 oCR=new CrystalReport1();
oCR.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = oCR;
}
(8)
运行程序

3
、水晶报表登陆失败
using CrystalDecisions.Shared;
//
声明所需变量。
TableLogOnInfo logOnInfo = new TableLogOnInfo();
//
对报表中的每个表依次循环。
for (int i=0;i < Report.Database.Tables.Count-1;i++)
{
//
设置当前表的连接信息。
logOnInfo.ConnectionInfo.ServerName = serverNameTxt.Text;
logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;
logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;
logOnInfo.ConnectionInfo.Password = passwordTxt.Text;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}
注意 受密码保护的 Microsoft Access  Paradox  PC 数据库也使用该方法,但 LogOnInfo.ServerName为数据文件的路径, LogOnInfo.DatabaseName 要保留为空。TableLogOnInfo 是属于CrystalDecisions.Shared 命名空间的成员。要添加引用:using CrystalDecisions.Shared;

4
、水晶报表应用程序的发布
1)
安装部署
安装部署时,把水晶报表的msm打进去,注册到服务器,要部署使用 Crystal Reports for Visual Studio .NET 2003 的程序,首先,找到以下7个文件(你可以 'C:\Program Files\Common Files\Merge Modules' 文件夹下找到)
Crystal_Database_Access2003.msm 
Crystal_Database_Access2003_chs.msm 
Crystal_Managed2003.msm
Crystal_Managed2003_chs.msm
Crystal_regwiz2003.msm 
VC_User_CRT71_RTL_X86_---.msm 
VC_User_STL71_RTL_X86_---.msm
接着,在解决方案资源管理器中,右击安装项目,指向添加,然后单击合并模块。在添加模块对话框中,选择上面的7个要添加到安装项目的合并模块,然后单击打开
还有,打开解决方案-->右键点击 Crystal_regwiz2003.msm 的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203443,如需转载请自行联系原作者

目录
相关文章
|
4天前
|
开发框架 .NET 中间件
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
|
5天前
|
人工智能 开发框架 量子技术
【专栏】.NET 技术:驱动创新的力量
【4月更文挑战第29天】.NET技术,作为微软的开发框架,以其跨平台、开源和语言多样性驱动软件创新。它在云计算、AI/ML、混合现实等领域发挥关键作用,通过Azure、ML.NET等工具促进新兴技术发展。未来,.NET将涉足量子计算、微服务和无服务器计算,持续拓宽软件开发边界,成为创新的重要推动力。掌握.NET技术,对于开发者而言,意味着握有开启创新的钥匙。
|
5天前
|
开发框架 .NET C#
【专栏】理解.NET 技术,提升开发水平
【4月更文挑战第29天】本文介绍了.NET技术的核心概念和应用,包括其跨平台能力、性能优化、现代编程语言支持及Web开发等特性。文章强调了深入学习.NET技术、关注社区动态、实践经验及学习现代编程理念对提升开发水平的重要性。通过这些,开发者能更好地利用.NET构建高效、可维护的多平台应用。
|
5天前
|
机器学习/深度学习 vr&ar 开发者
【专栏】.NET 技术:引领开发新方向
【4月更文挑战第29天】本文探讨了.NET技术如何引领软件开发新方向,主要体现在三方面:1) 作为跨平台开发的先锋,.NET Core支持多操作系统和移动设备,借助.NET MAUI创建统一UI,适应物联网需求;2) 提升性能和开发者生产力,采用先进技术和优化策略,同时更新C#语言特性,提高代码效率和可维护性;3) 支持现代化应用架构,包括微服务、容器化,集成Kubernetes和ASP.NET Core,保障安全性。此外,.NET还不断探索AI、ML和AR/VR技术,为软件开发带来更多创新可能。
|
5天前
|
开发框架 Cloud Native 开发者
【专栏】剖析.NET 技术的核心竞争力
【4月更文挑战第29天】本文探讨了.NET框架在软件开发中的核心竞争力:1) .NET Core实现跨平台与云原生技术的融合,支持多操作系统和容器化;2) 提升性能和开发者生产力,采用JIT、AOT优化,提供C#新特性和Roslyn编译器平台;3) 支持现代化应用架构,包括微服务和容器化,内置安全机制;4) 丰富的生态系统和社区支持,拥有庞大的开发者社区和微软的持续投入。这些优势使.NET在竞争激烈的市场中保持领先地位。
|
5天前
|
开发框架 .NET 开发者
【专栏】领略.NET 技术的创新力量
【4月更文挑战第29天】.NET技术自ASP.NET起历经创新,现以.NET Core为核心,展现跨平台能力,提升性能与生产力,支持现代化应用架构。.NET Core使开发者能用同一代码库在不同操作系统上构建应用,扩展至移动和物联网领域。性能提升,C#新特性简化编程,Roslyn编译器优化代码。拥抱微服务、容器化,内置安全机制,支持OAuth等标准。未来.NET 6将引入更快性能、Hot Reload等功能,预示着.NET将持续引领软件开发潮流,为开发者创造更多机会。
|
5天前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
|
5天前
|
人工智能 前端开发 Cloud Native
【专栏】洞察.NET 技术的开发趋势
【4月更文挑战第29天】本文探讨了.NET技术的三大发展趋势:1) 跨平台与云原生技术融合,通过.NET Core支持轻量级、高性能应用,适应云计算和微服务;2) 人工智能与机器学习的集成,如ML.NET框架,使开发者能用C#构建AI模型;3) 引入现代化前端开发技术,如Blazor,实现前后端一致性。随着.NET 8等新版本的发布,期待更多创新技术如量子计算、AR/VR的融合,.NET将持续推动软件开发的创新与进步。
|
5天前
|
人工智能 前端开发 Devops
【专栏】洞察.NET 技术在现代开发中的作用
【4月更文挑战第29天】本文探讨了.NET技术在现代软件开发中的核心价值、应用及挑战。.NET提供语言统一性与多样性,强大的Visual Studio工具,丰富的类库,跨平台能力及活跃的开发者社区。实际应用包括企业级应用、Web、移动、云服务和游戏开发。未来面临性能优化、容器化、AI集成等挑战,需持续创新。开发者应深入理解.NET,把握技术趋势,参与社区,共创美好未来。
|
5天前
|
开发工具 C# 开发者
【专栏】理解.NET 技术,开创美好未来
【4月更文挑战第29天】本文探讨了.NET技术在软件开发中的关键作用,强调其核心优势,如语言多样性、丰富类库、强大的开发工具和跨平台能力。.NET在现代应用开发中涉及企业级应用、云服务集成、微服务、移动应用和游戏开发。未来,.NET将持续创新,提升性能,拓展应用场景,并促进更紧密的社区合作,通过跨平台框架扩大应用范围。开发者应深入学习.NET,抓住技术趋势,共创美好未来。