• 关于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,0,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', ftInteger, 0, True);
    Add('Name', ftString, 25, False);
    Add('Weight', ftFloat, 0, 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', ftInteger, 0, false);
    Add('VALUE', ftLargeInt, 0, false);
    Add('BytesField', ftBytes, 20, false);
    Add('Color', ftInteger, 0, false);
    Add('Date', ftDate, 0, false);
    Add('Memo', ftMemo, 0, false);
    Add('AutoInc', ftAutoInc, 0, 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 VERSION@@ 200
    @@TABLEDEF START@@
    Period=Integer,0,"Period","",10
    VALUE=LargeInt,0,"VALUE","",15
    BytesField=Bytes,20,"BytesField","",10
    Color=Integer,0,"Color","",10
    Date=Date,0,"Date","",10
    Memo=Memo,0,"Memo","",10
    AutoInc=AutoInc,0,"AutoInc","",10
    CALC=String,20,"CALC","",20
    @@TABLEDEF END@@
    Period VALUE BytesField Color Date Memo AutoInc CALC
    1 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-三月
    在文档的头部份描述了表的字段结构,在下面则是数据区域。

  • 相关阅读:
    基于C#和Asp.NET MVC开发部标视频和苏标主动安全监控平台
    基于Java Netty框架构建高性能的部标808协议的GPS服务器
    交通部796部标平台开发索引
    GPS部标监控平台的功能设计(一)-功能列表
    基于Java Mina框架的部标jt808服务器设计和开发
    基于Asp.NET MVC框架+SignalR +ActiveMQ + Ali OSS 服务构建苏标主动安全智能防控平台
    部标809协议2019版本与2011版本的区别
    出租车Jt/T 905协议与部标1078协议融合的网约车视频监控平台
    基于JT/T 1078协议设计和开发部标视频服务器
    基于Html5+HLS协议播放符合部标1078协议的实时流媒体视频
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1634476.html
Copyright © 2020-2023  润新知