加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于Delphi内存表的使用说明

发布时间:2020-12-15 09:53:10 所属栏目:大数据 来源:网络整理
导读:关于Delphi内存表的使用说明: 1.建立临时表? 数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表

关于Delphi内存表的使用说明:

1.建立临时表?
  数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。

2 建立临时表如下:

function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet; var?
TempTable:TClientDataSet;?
begin?
  TempTable:=nil;?
  Result:=nil;?
  if AFieldDefs<>nil then?
  begin?
   try?
  TempTable:=TClientDataSet.Create(Application);?
   TempTable.FieldDefs.Assign(AFieldDefs);?
   TempTable.CreateDataSet;?
   Result:=(TempTable as TDataSet);?
  Except?
   if TempTable<>nil then?
TempTable.Free;?
  Result:=nil;?
   raise;?
  end;?
end;?
end;

//在程序中按如下方法使用:?
procedure TForm1.Button1Click(Sender: TObject);?
var?
ADataSet:TDataSet;?
 begin?
   ADataSet:=TDataSet.Create(Self);?
   with ADataSet.FieldDefs do?
   begin?
    Add(‘Name‘,ftString,30,False);?
   Add(‘Value‘,ftInteger,False);?
   end;

  with DataSource1 do?
  begin?
   DataSet:=CreateTableInMemory(ADataSet.FieldDefs);?
   DataSet.Open;?
end;

   ADataSet.Free;?
end;?

一、 Delphi使用内存表
1.1 Delphi创建内存表步骤:
1. 创建一个Ttable实例。
2. 设置一个DataBaseName为一个目录或是已有的数据库别名。
3. 指定TableName的值。
4. 设置TableType属性指明要创建的数据库表类型。(如果此属性为ttDefault表示数据库类型与TableName指定值的扩展名对应)。
5. 调用TTable.FidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数:
? 字段名:string。
? 字段类型:TfieldType。
? 字段大小:Word。一般只对String和Memo类型使用。
? 字段是否NotNull: Boolean。
6. 使用TTable.IndexDefs.Add()方法定义索引。Add有三个参数:
? 索引名:string;
? 索引字段名:string;
? 索引类型:TIndexOptions;
7. 调用TTable的CreateTable。这种方法适用于本地表。SQL表要用TQuery来创建。

代码如下:
var
MemTable: TTable;
begin
with MemTable.Create(Self) do
begin
DatabaseName := ‘c:Temp‘;
TableName := ‘Test‘;
TableType := ttParadox;
with FieldDefs do
begin
Add(‘Age‘,True);
Add(‘Name‘,25,False);
Add(‘Weight‘,ftFloat,False);
end;
IndexDefs.Add(‘‘,‘Age‘,[ixPrimary,ixUnique]);
CreateTable;
end;
end;
二、 kbmMemTable使用简述
2.1 kbmMemTable创建步骤:
1. 创建一个kbmMemTable对象实例。
2. 调用kbmMemTable.FidldDefs对象的Add方法向数据库表中添加字段。Add的方法和Delphi相同。
3. 使用kbmMemTable.IndexDefs.Add()方法定义索引。Add的方法和Delphi相同。
4. 调用kbmMemTable的CreateTable。
重要的区别:因为kbmMemTable不需要BDE的支持。所以不要指明DatabaseName,TableName和TableType三个属性。
  
代码如下:
with kbmMemTable1 do
begin
with kbmMemTable1.FieldDefs do
begin
Clear;
Add(‘Period‘,false);
Add(‘VALUE‘,ftLargeInt,false);
Add(‘BytesField‘,ftBytes,20,false);
Add(‘Color‘,false);
Add(‘Date‘,ftDate,false);
Add(‘Memo‘,ftMemo,false);
Add(‘AutoInc‘,ftAutoInc,false);
end;
with kbmMemTable1.IndexDefs do
begin
Clear;
Add(‘Index1‘,‘VALUE‘,[]);
end;
CreateTable;
end;


三、与Delphi创建内存表的对比
3.1主从表功能
kbmMemTable可以象其它TDataSet一样,通过设置MasterSource和MasterField来简单的完成主从表的操作。
3.2 SQL功能
  没有发现kbmMemTable可以支持SQL语句的操作。它提供按字段排序和对排序字段的查找功能。
三、 kbmMemTable特点
从其它TDataSet得到数据。
代码如下:
LoadFromDataSet(Table1,[mtcpoStructure,mtcpoProperties]);
这样kbmMemTable就完全得到来自一个DataSet对象中的全部数据.
保存和载入内存表中数据的功能
Delphi的TTable不提供SaveToFile功能。
kbmMemTable提供保存到文件的功能,保存的文件有两种格式:
Options: TkbmMemTable.SaveFlags;?
1. 二进制格式。kbmMemTable.SaveToBinaryFile(‘c:test.bin‘,Options).
kbmMemTable1.LoadFromBinaryFile(‘c:test.bin‘)
2. .csv格式。kbmMemTable.SaveToFile(‘c:test.csv‘,Options);
kbmMemTable1.LoadFromFile(‘c:test.csv‘)
(一种Excel支持的文档格式)打开后的内容如下:
@@FILE [email?protected]@ 200?
@@TABLEDEF [email?protected]@?
Period=Integer,"Period","",10?
VALUE=LargeInt,"VALUE",15?
BytesField=Bytes,"BytesField",10?
Color=Integer,"Color",10?
Date=Date,"Date",10?
Memo=Memo,"Memo",10?
AutoInc=AutoInc,"AutoInc",10?
CALC=String,"CALC",20?
@@TABLEDEF [email?protected]@?Period VALUE BytesField Color Date Memo AutoInc CALC1 198 0 02/11/2001 This is a memo%n2001-11-2 10:19:52 1 0 1-二月2 196 3 03/11/2001 This is a memo%n2001-11-2 10:19:52 2 1 2-三月在文档的头部份描述了表的字段结构,在下面则是数据区域。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读