开发crystal report报表要用什么语言

 我来答
己学好4
推荐于2017-10-05 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:5205万
展开全部
最近研究了Crystal Report的报表开发,感觉非常好用。特将开发要点小结如下:
一、Crystal Report的几个重要组件
1、Crystal Report Designer
Crystal Report之所以“可见即所得”就是靠这个组件,Crystal Report Designer用于编辑.rpt报表文件。
2、Crystal Report Viewer
将Crystal Report Designer设计的报表展示在Web页面或Windows Form 上就是用到这个组件。
3、Crystal Report Engine
Crystal Report Engine允许开发人员在运行阶段对报表的结构与内容进行完整的控制,但是 Crystal Report Engine必须和Crystal Report Viewer一同使用。

二、理解报表节(Report Section)
1、报表页眉节
报表页眉节中的数据在整份报表中只出现一次,而且只会显示在第一页的上方。
2、页眉节
页眉节中的数据会固定显示在每一页的顶端。
3、详细资料节
显示报表实际信息,如果绑定的数据库表(DataSet)有多个记录,则这些记录都将显示在详细资料节中。
4、报表页脚节
报表页眉节中的数据在整份报表中只出现一次,而且只会显示在最后一页之详细资料节中最后一个数据记录的下方。
5、页脚节
页脚节中的数据会固定显示在每一页的尾端。

三、水晶报表的执行模式
1、Pull模式
被请求时生成报表时,驱动程序自动连接数据库,并视需要提取数据。一般,简单的报表用Pull模式就可以了。
2、Push模式
使用Push模式,开发人员必须自行编写代码来连接数据库,运行SQL命令来创建DataSet,并将DataSet传递给报表。Push模式比较灵活,并且效率高。

四、使用Push模式
1、设计一个DataSet
(1)“解决方案浏览器”,选择“添加”--“添加新项”--“数据集(DataSet)”--"命名为DSCustomer";
(2)从“服务器资源管理器”中的SQL Server中拖放一个数据表到DataSet(如CustomerList表),此时在DataSet中就会有一个CustomerList表的结构图,保存DataSet(这步不能忘)。(当然一个DataSet中可以有多个数据表)
2、创建.rpt文件
(3)“解决方案浏览器”,选择“添加”--“添加新项”--“Crystal Report“;
(4)建立.rpt文件之后,右击报表设计界面的空白处--"添加/删除数据库";
 (5)在"数据库专家"窗口中,展开"项目数据"-"展开ADO.NET数据集"--"DSCustomer(DataSet)"--"选择CustomerList表";
(6)将"CustomerList"表填加到"选定的表中",点击"确定";
 (7)设计报表界面,这时可以在界面中拖放CustomerList表中的字段;
 3、建立一个Crystal Report Viewer控件,编写后台代码
 (8)在.aspx页面上建立一个Crystal Report Viewer,根据需要设置其属性;
 (9)在代码中访问数据库并把数据填充到DataSet;
private void BindReport()
{
RptRenderContract ReportDoc = new RptRenderContract();//.rpt文件对应的类
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connStr"]);
DsCustomer ds = new DsCustomer();    //创建DataSet对象ds
string strSelect = "SELECT * FROM CustomerList ;
SqlDataAdapter dadCustomer = new SqlDataAdapter(strSelect,conn);
dadRender.Fill(ds,"CustomerList");    //向ds填充CustomerList表
ReportDoc.SetDataSource(ds);    //设置.rpt文件对应类的数据源
CRVContract.ReportSource = ReportDoc;       //设置Crystal Report Viewer的报表源
}
 (10)在Page_Load方法中使用BindReport()函数。
 
 五、Crystal Report的使用技巧
 1、使用公式字段
 Crystal Report的的公式编辑器,允许开发人员用Basic语法和Crystal(类Pascal)语法来编辑公式字段。Example,如下:
  Dim strCpuType As String
   Select Case {CpuLeaseList.CpuType}
   Case 1
     strCpuType = "惠普CPU"
   Case 2
     strCpuType = "曙光CPU"
   Case 3
    strCpuType = "苹果CPU"
   End Select
  formula = strCpuType
有点遗憾的是Crystal Report的公式编辑器没有提供函数的帮助说明,有些函数的用法需要猜了。比如获取日期字段中月份的公式为:
formula = Month({CpuLeaseList.LeaseStartTime})
总之,要开发出满足客户需求的复杂报表,必须熟练使用公式字段。

2、数据的排序
数据排序可以利用两种方式。
方式1--用SQL语句先排序,然后把排序好的数据绑定到报表。
方式2--利用Crystal Report的排序功能。右击报表设计界面的空白处--“报表”--“排序记录”--根据需要设置排序字段。

3、分组报表数据
个人认为,Crystal Report的分组报表的功能非常强大,内置了功能强大的根据字段分组的功能,这个功能非常好用,如果仅仅用SQL 语句的Group BY 有些功能是不能实现的。比如如下SQL 语句:
SELECT DateName(mm, LeaseStartTime) AS [Month], sum(datediff(hh,LeaseStartTime,LeaseEndTime)) AS [Hour] FROM CpuLeaseList where LeaseStartTime
BETWEEN '2006-1-1' AND '2006-12-31'
GROUP BY DateName(mm,LeaseStartTime)
SELECT 所能筛选出来的字段只能是和和 GROUP BY 跟这的相同字段或聚合函数运算的字段,但这个问题在Crystal Report分组报表中却很容易解决。

4、使用图表和交叉表
快速创建图表和交叉表也是Crystal Report的一大优点,只要在适当的节(sector)中插入图表或交叉表,然后设置一些要显示的字段就OK了。

5、报表的导出和打印
将报表集成在Web应用程序中,需要自己编写代码实现报表的导出和打印(报表在Windows应用中已经集成了导出和打印的功能).不过据说,在Visual studio 2005中Crystal report在Web中的应用也集成了导出和打印功能.
遗憾的是,Visual studio2003下面用代码实现导出和打印时,Crystal Report不是很稳定,有时会出现莫名其妙的运行时错误: ( 这个问题让我郁闷了好多天)
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
报表的导出需要注意的是:1)必须设置导出目录相应的安全权限,否则是无法往本地计算机的磁盘上写文件的. 2)如果要实现打印和导出时,每次Page_Load()必须要绑定DataSet上的数据到报表上去.(这一点要非常注意!)
导出代码如下:
private void btnExport_Click(object sender, System.EventArgs e)
{
CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new CrystalDecisions. Shared. DiskFileDestinationOptions();
ReportDoc.ExportOptions.ExportDestinationType = CrystalDecisions. Shared.ExportDestinationType.DiskFile;
switch (ddlFormat.SelectedItem.Text)
{
case "Rich Text (RTF)":
  ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.RichText;//
  DiskOpts.DiskFileName = "D://Output.rtf";
break;

case "Portable Document (PDF)":
  ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;//
  DiskOpts.DiskFileName = "D://Output.pdf";
break;

case "MS Word (DOC)":
  ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.WordForWindows;//
  DiskOpts.DiskFileName = "D://Output.doc";
break;

case "MS Excel (XLS)":
  ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;//
  DiskOpts.DiskFileName = "D://Output.xls";
break;

default:
break;
}
ReportDoc.ExportOptions.DestinationOptions = DiskOpts;
  ReportDoc.Export();
}
DoramiHe
2017-03-03 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59542
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
正好最近在做 也在摸索中

这种按需的要求只能采用push模式,就要用到数据集了

先添加.xsd数据集 然后添加水晶报表绑定在刚才的数据集上 在后台写代码对数据库中的表进行操作 然后把操作结果填充进数据集 这样调用水晶报表的时候 就可以根据你的需要来显示了

基本上是这个流程 具体细节可以在网上查一查
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
望凡听B
2016-02-18 · TA获得超过2762个赞
知道小有建树答主
回答量:1112
采纳率:87%
帮助的人:64万
展开全部
最近研究了Crystal Report的报表开发,感觉非常好用。特将开发要点小结如下: 一、Crystal Report的几个重要组件 1、Crystal Report Designer Crystal Report之所以“可见即所得”就是靠这个组件,Crystal Report Designer用于编辑.rpt报表文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-02-23
展开全部
crystal report本,本身是一个集应用与设计为一体的平台,用户在使用报表时,可以直接通过界面操作,不许编写一行代码就可以完成报表对数据集数据的操作。同时还包括统计,分组,插入图表等操作。其运用的一般情况下是java语言吧,但是一般针对的是国外那种比较简单的报表需求,对于一些复杂的报表的需求无法满足,还是要借助一些国内的报表软件例如finereport等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式