crystal report使用总结。

张新林 2003-05-23 05:36:50
这周开始用crystal report做报表,记得刚开始使用时一头雾水,无从下手,在这儿也询问了大家许多问题,虽然没能一一得到解答,但总算也有不少帮助。在此想把我一星期的学习、使用的心得做个交流,希望新手可以减少上手时间,少走弯路,同时也希望高手不吝赐教。谢谢。
...全文
701 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
shala2002 2010-06-13
  • 打赏
  • 举报
回复
MARK一下了。
牛牛Alex 2003-07-08
  • 打赏
  • 举报
回复
sc
kld3000 2003-06-20
  • 打赏
  • 举报
回复
关注

不错不错

张新林 2003-06-20
  • 打赏
  • 举报
回复
如果报表图表深化有什么问题欢迎交流.
msn:gjinlin@hotmail.com
张新林 2003-06-16
  • 打赏
  • 举报
回复
报表图形的深化处理的实现。
1. 最好是先了解一下报表处理模型
ms-help://MS.VSCC/MS.MSDNVS.2052/crystlmn/html/crconreportprocessingmodel.htm
2. 图表处理的原理。
假如数据库的数据如下:
string1 string2 string3 int1
a b1 c1 1
a b1 c2 2
a b2 c4 3
b b1 c1 2
b b1 c2 3
我们所希望实现的效果如下:
以string1列作为X轴,进行统计那
string1=a时,int1的和是6
string1=b时int1的和是5
那么产生的统计如下:

3. 什么是深化。
我理解深化是指数据显示以多层来进行显示,用户选择感兴趣的数据,然后显示选择数据下的详细图表或数据情况。
比如:
string1 string2 string3 int1
a (6) b1 (3) c1(1) 1
c2(2) 2
b2 (3) c4(3) 3
b(5) b1 (5) c1(2) 2
c2(3) 3
先是显示string1分类的数据(或图型)对int1进行求和
a:6
b:5
当用户选择string1的a数据时,那么继续显示a低下的以string2作为类统计的数据。
b1:3
b2:3
同理,用户选择了b1后,显示以string3为为类统计的数据。
C1:1
C2:2
这样就达到深化的效果。
4.分组
要实现报表的深化必须先进行分组,
对上边的数据进行以string1,string2,string3进行分组,合计后的数据如下:
string1 string2 string3 int1
a (6) b1 (3) c1(1) 1
c2(2) 2
b2 (3) c4(3) 3
b(5) b1 (5) c1(2) 2
c2(3) 3
在cystal report的deigner上插入分组的方法是,任决节上右键选择”插入”-“分组”如图:

这里分别插入以string1,string2,string3作为分组.



4. 加入图表:任决节上右键选择”插入”-“”图表”


在分组后,就有了组为统计的int1和,以引而制作图表。
现图表专家。
类型是图表类型,选择您想要图型,要注意的是数据这个选项卡
更改为:是指出现在x轴上的刻度,而显示是出现在Y轴上的数据,就是当string1的数据发生改变时(string1只有a,b两种改变)y轴上显示的数据是多少。
以string1生成图表放在报表页眉上(每个报表一次),而以string2生成的统计图会放在string1组header上,以string3生成统计图放在string2组header上。以此类推。



5. 隐藏显示除报表页眉节的所有节。方法是:在节右键_选择深化。

只要设置深化完成,crystal report就自动处理要深化的节。因为”报表页眉”没有进行深化显示完成,所以报表一Load进行来时只是显示报表页眉的图型。
6. 编写公式。
如果只有两层的深化,点击string1分组效果的图型看到string2统计图的情况就不用编写公式,到上边第五步骤就完成了。但是如果要实现三层以上的分组那么必须编写公式。
Crystal Report在点击完string1,深入到下一层(string2)的时候,会把所有图形string2/string3/…等分组的图表都显示出来(单只是数据没有问题)。
为此要在显示string2的图形时把string3的图表所在节做”抑制显示”。实现抑制显示方法是:在节右键_格式化节…--弹出节专家—选择“抑制显示(无深化)”复选筐,这样就做到了抑制显示这个图型的节。


但并非所有时候都需要抑制显示该节,当显示string2分组时要抑制显示string3..string4分组的节,显示string3时要抑制显示string4以下层的节。显示这个是有条件的抑制显示。为此需要编写公式,进行条件的抑制显示。如下图:

这时开始进行公式编辑。
报表处理过程为自顶向下,如果某一节是循环的节,那么先循环完该节再处理下一节。比如:

报表页眉
组1
组2
明细资料
报表处理是
1. 输出页眉
2. 输出组1(第一个组1)(a=1)
3. 输出组2(组i下的组2)(a=1,抑制显示=true)
4. 输出组1页尾(a=2)
5. 回到第二步(下一个组1)。
6. 输出页尾
为了在组一显示时不显示组2的的方法是
在第二步定义一个变量a=1
在第三步判断如果a=1就不显示组2(抑制显示=true)
在第5步把a=2。
1.在组1定义一个公式,并把a的值设置为1如下:
whileprintingrecords; //表示输出报表时
numbervar a:=1
2.在页尾定义一个
whileprintingrecords;
numbervar a:=2
3.在组2的格式化节中,编写”抑制显示”公式
numbervar a=1 //如果等于1 返回true。
一句话:如果在组1不想显示组2的节,就是组1做标记,在组2做判断,然后再在组1的组页尾把标记示为其它值。
wangcl 2003-05-30
  • 打赏
  • 举报
回复
动态报表!表的列行都不能固定的有没有人能搞定呢
szseesea 2003-05-30
  • 打赏
  • 举报
回复
mark
llsico 2003-05-30
  • 打赏
  • 举报
回复
问一个菜鸟级问题
直接把excel作为数据源,如何读取,编辑,保存到原来的excel里面去阿
luxizhao 2003-05-30
  • 打赏
  • 举报
回复
好像标尺只有到20啊。
luxizhao 2003-05-30
  • 打赏
  • 举报
回复
不要意思不太明白,可以说的清楚点么?
luckysusan 2003-05-30
  • 打赏
  • 举报
回复

mark
luxizhao 2003-05-30
  • 打赏
  • 举报
回复
对了,我想请问搂主,crystal report中报表的页面宽度
可以设置么?不知道为什么,我用起来好像不能加大宽度的。
我用的是crystal report 9.0。
foxtoo2000 2003-05-29
  • 打赏
  • 举报
回复
4、对于图表的形成,如何能传参数来控制图表查询或分组的结果??
这是我做图表时存在的问题,一直没有解决,希望各位能给个好的意见,同时希望斑竹能再讲解的深入一点,呵呵,最好能以WEB页面为例,借贵宝地谈了自己的一些问题,多有得罪,谢谢!希望斑竹能解答。。。。
foxtoo2000 2003-05-29
  • 打赏
  • 举报
回复
3、对于报表的ReportSource,我只能用绝对地址吗?如何使用相对地址??或其他灵活的方式??
foxtoo2000 2003-05-29
  • 打赏
  • 举报
回复
1、请问:如果我只要报表页眉来显示统计图,而下面的其他不要,我把它们显示的信息删除并隐藏后,为何还有一段空白的页面,应怎样去除??
2、我应怎样去除图表上的联接,既在图表上不能点击!(如果点击图表,会出现“CrystalReportViewer - CrystalReportViewer1 ,Error: 渲染页失败。”的消息)
donger2000 2003-05-29
  • 打赏
  • 举报
回复
收藏
张新林 2003-05-29
  • 打赏
  • 举报
回复
七。报表设计过程:
规划报表内容 :给出创建报表之前需要注意的设计事项的大纲。
访问和添加数据 :说明如何连接到数据源、链接数据库表以及向报表添加数据。
字段和文本对象 :说明如何在报表上放置报表对象以生成所需数据。
筛选数据 :说明如何选择和限制数据库记录。
对数据进行分组、排序和总计 :说明如何组织报表中的数据。其中一些选项包括:向报表添加组、小计、运行总计和百分比。
执行记录计算 :说明如何通过创建和向报表中添加公式字段来自定义报表中的数据。
格式化数据 :说明如何向报表添加颜色、边框、阴影和条件格式。
改进报表外观 :说明如何添加图表和子报表,用户可以在这些图表和子报表上深化以访问报表的更详细资料。
lesho 2003-05-28
  • 打赏
  • 举报
回复
ding
张新林 2003-05-28
  • 打赏
  • 举报
回复
六.crystal report designer
1.报表组成:
对于新报表,Report Designer 分为五个报表节-报表页眉/页眉 /详细资料 /报表页脚 /页脚


报表页眉 :(整个报表只出现一次,且首先出现)
放在“报表页眉”节中的对象只在报表开头输出显示一次。
“报表页眉”节通常包含报表的标题和其他希望只在报表开始位置出现的信息。

报表页脚 :(整个报表只出现一次,最后出现)


页眉 :
放在“页眉”节中的对象输出显示在每个新页的开始位置。

“页眉”节通常包含希望在每页的顶部出现的信息。它可以包括文本字段(如章节名、文档名或其他类似信息)。该节也可以用来包含字段标题。在报表中这些字段

标题将作为标签显示在字段数据列的顶部。



页脚 :
放在“页脚”节中的对象输出显示在每页的底部。

该节通常包含页码。


详细资料 :(重复出现的数据)
放在“详细资料”部分中的对象随每条记录输出显示。

图表或交叉表不能放置在该节中。
放在该节中的公式对每条记录进行一次求值。

2.工具条:
一是主工具条:能过它能切换是否查看字段列表。
二是插入工具条:通过它插入图形、分组等。
3.字段资源管理器(出现在左边的列表)
1.数据库字段:公式、字段、参数、组名、运行总计和未绑定字段等等。
张新林 2003-05-27
  • 打赏
  • 举报
回复
这儿做一个报表查看器,它可以查看以后所制作的报表,它基本于winform的。
a.添加一个工程
b.添加一个form
c.拉一个CrystalReportViewer控件到form上(如果不能看到该控件,请添加对 CrystalDecisions.Windows.Forms 命名空间的引用)
d.添加一按钮用于打开报表
c.为该按钮添加事件代码如下
private void btnSelectReport_Click(object sender, System.EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Select Crystal Reports file";
dlg.Filter = "Crystal Reports (*.rpt)|*.rpt|All Files (*.*)|*.*";
dlg.InitialDirectory = "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports";
if (dlg.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
crystalReportViewer.ReportSource = dlg.FileName;
this.Cursor = Cursors.Default;
}
}

使用的命名空间有:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

这样只要用户选择了报表就能显示出来。
vb代码
Private Sub btnSelectReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectReport.Click
Dim dlg As New OpenFileDialog()
dlg.Title = "Select Crystal Reports file"
dlg.Filter = "Crystal Reports (*.rpt)|*.rpt|All Files (*.*)|*.*"
dlg.InitialDirectory = "C:\Program Files\Microsoft Visual Studio.NET\Crystal Reports\Samples\Reports"
If (dlg.ShowDialog() = DialogResult().OK) Then
Me.Cursor = Cursors.WaitCursor
crystalReportViewer().ReportSource = dlg.FileName
file = dlg.FileName
Me.Cursor = Cursors.Default
End If
End Sub
加载更多回复(9)
平日学习总结. 纯手工编辑啊!! 谢谢支持! -------------- 一: 前期准备工作  Crystal Report 2008  JDBC 相关jar包 --- mysql-connector-java-5.1.22-bin.jar(MySQL) Jar包下载: mysql-connector-java-5.1.22-bin.jar (见附件) JAR包添加: 1. 把JAR包放在水晶报表CrystalReport的目录下面 C:\Program Files\Business Objects\Common\4\java\lib\external 2. 然后找到 JAR包的配置文件CRConfig.xml C:\Program Files\Business Objects\Common\4\java\CRConfig.xml 3. 打开CRConfig.xml 在添加 C:\Program Files\Business Objects\Common\4.0\java/lib/external/mysql-connector-java-5.1.22-bin.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/crlovmanifest.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/CRLOVExternal.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/CRDBJDBCServer.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/CRDBXMLServer.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/CRDBJavaBeansServer.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/external/CRDBXMLExternal.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/external/log4j.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/CRDBSForceServer.jar; C:\Program Files\Business Objects\Common\4.0\java/lib/external/CRDBSForceExternal.jar;${CLASSPATH} 4. 更改水晶报表的JDK环境 <!--C:\Program Files\Business Objects\javasdk\bin--> C:\Program Files\Java\jdk1.6.0_06\bin
水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的使用方法总结一下,供大家参考。 首先介绍一下我用的软件环境:Microsoft Visual Studio 2005;Microsoft SQL Server 2005 【数据用例】 服务器:SQLEXPRESS 数据库名:Test 数据库表:T 数据: 图1 【说明】 水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息(具体方法,后面介绍)。推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中SQL语句而生成的dataset对像。也就是说,推模式是用dataset组装水晶报表。 水晶报表组件介绍。水晶报表在VS2005中有两种组件,在WEB项目是分别是CrystalReportSource,CrystalReportViewer。在FORM项目里是分别是crystalReportCrystalReportViewer。 CrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成。 下面分别介绍具体操作方法: 拉模式(PULL): 在拉模式中如要在水晶报表中的SQL语句加上条件参数时要用{?参数名}方式给出。例:“Select T1, T2, T3 FROM T Where T1='{?parm}'” parm就是参数名 以下例子中所用到的水晶报表文件中使用的SQL语句是“Select T1, T2, T3 FROM T Where T1='{?parm}'” parm就是参数名。 【WEB方式下】 using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; /// ///功能:拉模式提取水晶报表 ///个人主页:http://www.dzend.com/ /// /// /// protected void Button_pull_Click(object sender, EventArgs e) { // CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像。 CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt")); // SetDatabaseLogon 拉模式中必须用这个方法来设置登录信息,参数一:用户名;参数二:密码;参数三:服务器;参数四:数据库名 CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "123456", @"SYWZSWL\SQLEXPRESS", "Test"); //给水晶报表传参数,参数一:是参数名,参数二:参数值; CrystalReportSource1.ReportDocument.SetParameterValue("Title", "这是一个测试报表"); CrystalReportSource1.ReportDocument.SetParameterValue("Parm", "1"); //绑定水晶报表数据源。 CrystalReportSource1.DataBind(); // CrystalReportViewer1是水晶报表浏览器,下面是给该浏览器赋上对像 CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.DataBind(); }

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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