MemTableEh 内存表使用

内存表有很多种,常见的有ClientDataSet、KBMemTable、MemTableEh、FDMemTable 大部分内存表都实现列自由序列化和数据导入导出,而这里要介绍的MemtableEh 由于版本限制,不得不通过低级的方法来实现一些其他内存表可以轻松搞定的事情
1.表复制
  • 表复制包括2种情况,一是只复制表结构,不复制数据;二是同时赋值数据和表结构
    目前MemTableEh 只有一个 CopyStructure 方法,即复制表结构,复制数据只能遍历数据集逐个复制:

示例:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEhGrouping, StdCtrls, DB, GridsEh, DBGridEh, DBTables,
  MemTableDataEh, MemTableEh;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DBGridEh1: TDBGridEh;
    DataSource1: TDataSource;
    Button1: TButton;
    MemTableEh1: TMemTableEh;
    DataSource2: TDataSource;
    DBGridEh2: TDBGridEh;
    Button2: TButton;
    Table1NAME: TStringField;
    Table1SIZE: TSmallintField;
    Table1WEIGHT: TSmallintField;
    Table1AREA: TStringField;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s:=Dbgrideh1.GetFooterValue(0,DBGridEh1.Columns[2]);
  caption:=s;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
begin

  MemTableEh1.CopyStructure(table1);
  MemTableEh1.CreateDataSet;
  MemTableEh1.Active:=True;

  Table1.First;
  MemTableEh1.DisableControls;

  while not Table1.Eof do
  begin
     with MemTableEh1 do
     begin
       Append;
       for i:=0 to Table1.FieldCount-1 do
       begin
         FieldByName(Table1.Fields[i].FieldName).Value:=Table1.FieldbyName(Table1.Fields[i].FieldName).Value;
       end;
       Post;
     end;
     Table1.Next;
  end;
  MemTableEh1.Append;
  MemTableEh1.FieldByName('Name').Value:='总计:';
  MemTableEh1.FieldByName('Size').Value:=DBGridEh1.GetFooterValue(0,DBGridEh1.Columns[1]);
  MemTableEh1.FieldByName('Weight').Value:=DBGridEh1.GetFooterValue(0,DBGridEh1.Columns[2]);
  MemTableEh1.Post;
  MemTableEh1.EnableControls;

end;

end.

效果:
image

posted @ 2023-07-13 16:44  丹心石  阅读(767)  评论(1)    收藏  举报