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

一、概述
在用Delphi编写数据库程序时,经常涉及到数据的导入和导出操作,如:将大型数据库中的数据存储为便携文件,以便于出外阅读;将存储在文件中的数据信息,导入到另外的数据库中;而且,通过将数据库中的数据存储为数据文件,更便于程序内部和程序间交换数据,避免通过内存交换数据的烦琐步骤,例如在笔者编写的通用报表程序中即以该控件作为数据信息传递的载体。
二、基本思路
作为数据报存储控件,应能够存储和读入数据集的基本信息(如:字段名,字段的显示名称,字段的数据类型,记录数,字段数,指定记录指定字段的当前值等),应能够提供较好的封装特性,以便于使用。
基于此,笔者利用Delphi5.0面向对象的特点,设计开发了数据报存储控件。
三、实现方法
编写如下代码单元:
unit IbDbFile;
interface
Uses Windows, SysUtils, Classes, Forms, Db, DbTables, Dialogs;
Const
Flag = ''数据报-吉星软件工作室'';
Type
TDsException = Class(Exception);
TIbStorage = class(TComponent)
private
FRptTitle: string; //存储数据报说明
FPageHead: string; //页头说明
FPageFoot: string; //爷脚说明
FFieldNames: TStrings; //字段名表
FStreamIndex: TStrings; //字段索引
FStream: TStream; //存储字段内容的流
FFieldCount: Integer; //字段数
FRecordCount: Integer; //记录数
FOpenFlag: Boolean; //流是否创建标志
protected
procedure Reset; //复位---清空流的内容
procedure SaveHead(ADataSet: TDataSet; Fp: TStream); //存储报表头信息
procedure LoadTableToStream(ADataSet: TDataSet); //存储记录数据
procedure IndexFields(ADataSet: TDataSet); //将数据集的字段名保存到列表中
procedure GetHead(Fp: TFileStream); //保存报表头信息
procedure GetIndex(Fp: TFileStream); //建立记录流索引
procedure GetFieldNames(Fp: TFileStream); //从流中读入字段名表
function GetFieldName(AIndex: Integer): string; //取得字段名称
function GetFieldDataType(AIndex: Integer): TFieldType;
function GetDisplayLabel(AIndex: Integer): string; //取得字段显示名称
procedure SaveFieldToStream(AStream: TStream; AField: TField); //将字段存入流中
function GetFieldValue(ARecordNo, FieldNo: Integer): string; //字段的内容
public
Constructor Create(AOwner: TComponent);
Destructor Destroy; override;
procedure Open; //创建流以准备存储数据
procedure SaveToFile(ADataSet: TDataSet; AFileName: string); //存储方法
procedure LoadFromFile(AFileName: string); //装入数据
procedure FieldStream(ARecordNo, FieldNo: Integer; var AStream: TStream);
property FieldNames[Index: Integer]: string read GetFieldName; //字段名
property FieldDataTypes[Index: Integer]: TFieldType read GetFieldDataType;
property FieldDisplayLabels[Index: Integer]: string read GetDisplayLabel;
property Fields[RecNo, FieldIndex: Integer]: string read GetFieldValue;
//property FieldStreams[RecNo, FieldIndex: Integer]: TStream read GetFieldStream;
property RecordCount: Integer read FRecordCount write FRecordCount;
property FieldCount: Integer read FFieldCount write FFieldCount;
published
property RptTitle: string read FRptTitle write FRptTitle;
property PageHead: string read FPageHead write FPageHead;
property PageFoot: string read FPageFoot write FPageFoot;
end;

function ReadAChar(AStream: TStream): Char;
fu

网学推荐

免费论文

原创论文

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