网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
在Delphi中实现数据分析模块的动态报表
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

  一、问题的提出

---- Delphi作为强大的数据库开发工具,正被愈来愈多的编程人员所采用,"聪明的程序员用Delphi"更形象生动的道出广大程序员的心声,但这并不意味着所有功能的实现都非常容易,例如,笔者在开发军队的某个信息系统中,就在为数据分析模块中DecisionGrid1控件的数据进行报表输出时走了不少的弯路。广大的Delphi的爱好者在今后的学习或工作中也有可能会遇到类似的问题,而在许多参考书中,很少有甚至没有关于它们的解决方法,于是,我想花费一点时间把它整理出来,以供大家参考。本文中报表动态生成的公用模块具有很大的灵活性和易操作性,其中的思路、实现的功能和通用性等方面的优缺点就由大家看了本文后自有定论。

二、建立报表的动态输出公用模块

---- 下面,结合公司人事管理信息系统说明其实现的方法和技术。

---- 1、基本思路:首先从DecisionGrid1中获得报表所需数据,放到二维数组PA中,然后在C:\DataWork中动态创建一个数据表tjb.dbf,存放报表数据,最后用T able1与tjb.dbf相连接,以后工作就与一般的动态输出报表(如查询报表)相类似,在这里我就无须赘述了。

---- 2、建立窗体文件:放入六个用于数据分析的常用控件DecisionQuery1、DecisionSource1、DecisionCube1、DecisionGraph1、DecisionPivot1、DecisionGrid1,设置DecisionSource1的decisionCube属性为decisionCube1,decisionCube1的Dataset属性为decisionQuery1、decisionQuery1的DatabaseName属性为c:\datawork;一个Table1控件,用于连接数据表tjb.dbf;一个QuickRep1控件,用于数据的报表输出;两个Button1和Button2控件,其Caption分别设为"报表输出"和"返回"。分别设置decisionCube1的Dataset属性为decisionQuery1、decisionQuery1的DatabaseName属性为c:\datawork.。

---- 3、单元文件的主要控件代码 Button1控件的代码如下(定义变量部分略),主要分以下8个功能块来加以说明:

---- ⑴删除同名或上一次建立的数据表

if FileExists(''c:\DataWork\tjb.dbf'') then
deletefile(''c:\ DataWork \tjb.dbf'');

---- ⑵根据DecisionGrid1控件的cells属性,获得报表所需数据,并将其默认的''Sum''值汉化成''总计''、''合计''、''小计''以符合汉语的习惯要求,所求得的数据存放于二维数组PA中
for i:=1-DecisionGrid1.FixedCols to DecisionGrid1.
ColCount-DecisionGrid1.FixedCols-1 do
for j:=0-DecisionGrid1.FixedRows to DecisionGrid1.
RowCount-DecisionGrid1.FixedRows-1 do
begin
pa[i,j]:=DecisionGrid1.cells[i,j];
//处理DecisionGrid1控件中固定列的值为''Sum''的数据项
if ((i=1-DecisionGrid1.fixedcols) and (pa[i,j]=''Sum'')) then
pa[i,j]:=''总 计''
else if ((i = -1) and (pa[i,j]=''Sum'')) then
pa[i,j]:=''小 计''
else if ((i<-1) and (i>1-DecisionGrid1
.FixedCols) and (pa[i,j]=''Sum'')) then
pa[i,j]:=''合 计'';
//处理DecisionGrid1控件中固定行的值为''Sum''的数据项
if (pa[i,j]=''Sum'' ) and (j=-1) then
pa[i,j]:=''总 计'';
end;

---- ⑶用T able1动态创建数据表tjb.dbf
Table1.Active:=false;
with Table1 do
begin
DatabaseName := ''c:\DataWork'';
TableName := ''tjb'';
TableType := ttDBase;
with FieldDefs do
begin
Clear;
for i:=1 to 40 do
Add(IntToStr(i),ftString,30, False);
end;
CreateTable;
end;
//下面将DecisionGrid1控件中的数据放入数据表中
Table1.Active:=true;
for j:=1-DecisionGrid1.FixedRows to DecisionGrid1
.RowCount-DecisionGrid1.FixedRows-1 do
begin
K:=0;
Table1.Insert;
for i:=1-Decision
  • 上一篇资讯: Delphi中巧妙利用RES文件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号