数据挖掘实验室
一、 利用 Crystal Report 9 VCL 编程
数据挖掘工具
1、 利用VCL编写程序
当我们安装好VCL组件,同时也对VCL中的Demo做了熟悉,下面我们就可以尝试利用VCL组件来编写我们自己的报表系统了。
·新建一个Application,在Data Access Tab 中选择Crpe组件,放置到Form中,再放置一个Button按扭,双击Button,编写如下代码:
数据挖掘工具
procedure TForm1.Button1Click(Sender: TObject);
数据挖掘实验室
begin 数据挖掘实验室
Crpe1.ReportName := "C:your report.rpt";
数据挖掘实验室
Crpe1.Execute;
数据挖掘实验室
end; 数据挖掘论坛
编译代码,执行,点击按扭会打开"C:your report.rpt报表文件。 数据挖掘研究院
对上面代码进行完善一下,例如可以通过打开对话框打开自己想要浏览的报表文件,修改代码如下: 数据挖掘实验室
procedure TForm1. Button1Click (Sender: TObject); 数据挖掘论坛
begin
数据挖掘工具
if OpenDialog1.Execute then 数据挖掘工具
begin 数据挖掘研究院
Crpe1.ReportName := OpenDialog1.FileName; 数据挖掘实验室
try
Screen.Cursor := crHourGlass; 数据挖掘实验室
Crpe1.Execute;
数据挖掘研究院
finally
数据挖掘研究院
Screen.Cursor := crDefault;
数据挖掘工具
end;
end;
数据挖掘研究院
end;
注意在使用TCrpe.Execute时,最好加上try … finally…,对代码进行保护。 数据挖掘工具
Crystal Report 9 VCL 的功能非常强大,通过编程我们可以控制报表的导出,打印和界面显示简单功能,而且也能处理报表中的图表显示,数据字段定义等复杂功能,给我们很大的自由度满足我们的应用需求。
数据挖掘论坛
数据挖掘交友
2、 简单连接数据源代码实现——只使用Tcrpe32组件就可以满足我们的需求 数据挖掘研究院
我们用Access数据表举例,首先我们需要用Access来建立我们需要的数据库表结构,然后用Crystal Report 9来创建报表模板(关于如何来制作报表模板不是本文所涉及的内容,读者可以参考Crystal Report 9方面的参考资料),然后在我们的代码中加入Crpe1. Refresh即可。假如我们所创建的Access表文件为dbReport.mdb,则只需要更新dbReport.mdb文件中的数据,我们打开的报表就可以看到新的数据内容的报表了。
数据挖掘工具
try
Screen.Cursor := crHourGlass; 数据挖掘实验室
Crpe1.Refresh;
数据挖掘工具
Crpe1.Execute; 数据挖掘实验室
finally 数据挖掘研究院
Screen.Cursor := crDefault; 数据挖掘工具
end; 数据挖掘研究院
3、 复杂数据源实现——需要TcrpeDS辅助实现数据源的连接
如果数据源不固定,或者用Ttable的方式,例如用TclientDataSet方式等,那么我们就需要考虑用到VCL的另一个组件TcrpeDS来实现我们的需求了。 数据挖掘实验室
上面说到的是用Access数据库,在这里照样可以使用,但我们这里用TcrpeDS组件实现,所以需要用到ADO数据连接(或者ODBC等其他方法)。
·在Form中加入TADOConnection和TADODataSet这两个组件。
数据挖掘交友
·设置TADOConnection,连接Access数据表。双击ADOConnection组件 数据挖掘实验室
数据挖掘实验室
·点击Build,弹出数据连接属性,选择Microsoft Jet 4.0 OLE DB Provider 数据挖掘论坛
数据挖掘交友
数据挖掘论坛
·下一步,连接选择Access数据表文件dbReport.mdb,确定即可。 数据挖掘研究院
数据挖掘研究院
数据挖掘实验室
·将TADODataSet的Connection属性设置为TADOConnection(ADOConnection1)。 数据挖掘研究院
·将TcrpeDS的DataSet属性设置为TADODataSet(ADODataSet1)。
·代码实现: 数据挖掘论坛
Crpe1.Tables[0].DataPointer := CrpeDS1.DataPointer;
数据挖掘实验室
Crpe1.Refresh; 数据挖掘交友
Crpe1.Execute;
TclientDataSet的使用方法,为什么要使用TclientDataSet呢?因为我们一方面不想使程序需要第三方数据库引擎,另一方面想提高速度的时候,就可以考虑使用TclientDataSet,这样我们可以把数据写入TclientDataSet所建立的表临时表中,完全在内存中使用,当
数据挖掘论坛