fastreport是一个功能强大的报表系统,c/s运用的比较多,这次我来介绍下b/s下使用fastreport。网上有部分说明,可能是技术保守性,只有寥寥几笔。这次手把手叫大家在intraweb中使用fastreport,应该会很快学会的。
网上大家都是建议用ocx开发报表控件。界面虽然直观,但是这个方法有局限性,它只支持IE,不支持谷歌,火狐等浏览器,我这就是直接转换打印出来的。
首先要确保你的电脑上安装了fastreport控件。高版本的delphi xe系列自带了。低版本还是需要自己安装了。下载地址:http://download.csdn.net/detail/bjcee/8873503
在界面上添加四个控件frxDBDataset1、frxReport1、frxHTMLExport1、ADOQuery1。个控件分别的作用:frxDBDataset1是报表控件和intraweb连接的纽带。frxReport1是报表编辑控件。frxHTMLExport1都出表格成html格式,为什么不用pdf呢?不是所用人的电脑上都装有pdf的。ADOQuery1数据控件。
把个控件的关系弄一下。frxReport1.DataSet :=frxDBDataset1。frxDBDataset1.DataSet := ADOQuery1。所以说frxDBDataset1是纽带作用。ADOQuery连接IWUserSession.aConn。
为增加程序的可读性,我们再增加几个控件。IWTabControl1Page0(分页使用)、IWLabel1(标签时间)、TIWDateSelector1(时间选择)、btnPreview(预览按钮)、btnPrint(打印按钮)。
在程序目录下建两个文件夹,用于存放编辑的报表和缓存文件,我们定义他们的名字分别为reports,files。
开始用frxReport1编辑报表。在界面上双击frxReport1。弹出个界面。
先帮frxReport1选择数据源。【报表】→【数据】→勾上frxDBDataset1
编辑一个报表,保存在安装目录的reports里,命名为Day.fr3。其中每个小单元格里都是这样的:[frxDBDataset1."F_CarNO"]
接下来就是在预览的按钮里写代码了。代码如下:
procedure TiwfrmReport.btnPreviewClick(Sender: TObject);
var
sSql:String;
Lfile,webpath,LWindowName,LOptions ,lurl,surl:string;
SelectTime:string;
SeYear:string;
YMDTime: TDateTime;
begin
YMDTime := TIWDateSelector1.Date;
SelectTime := FormatDateTime('yyyy-mm-dd',YMDTime);
sSql:=' select * from T_Standard ';
sSql := sSql + ' where F_Iscancel=0 and F_IsFinish=1 and F_EndTime like '''+selecttime+'%'' ';
sSql := sSql + ' order by F_EndTime asc ';
ADOQuery1.Connection:=dm.aConn;
ADOQuery1.Close();
ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add(sSql);
ADOQuery1.Open();
webpath:=ExtractFilePath(Paramstr(0))+'reports\Day.fr3';//报表路径
frxReport1.LoadFromFile(webpath);//加载报表
Lfile:='printat'+FORMATDATETIME('hhmmss',NOW)+'.htm';//报表名
frxhtmlexport1.FileName:=ExtractFilePath(Paramstr(0))+'files\'+webapplication.AppID+'\'+LFILE ;//报表输出路径
ForceDirectories(ExtractFileDir(frxhtmlexport1.FileName));//强制创建文件夹
frxreport1.PrepareReport();
frxreport1.Export(frxHTMLExport1);//报表导出html格式
LWindowName := '日报表';//页面名
LOptions := 'scrollbars=yes,width=900,height=1058';//页面大小
LURL := 'files/'+webapplication.AppID+'/'+LFile;//生产Url
AddToInitProc('NewWindow("' + LURL + '", "' + LWindowName + '","' + LOptions + '");');//打开报表
end;