当前位置:学Delphi网文档资料技术资料数据库

Delphi编程里建立临时表的方法

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2010-10-30 00:01:24

数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。这种方法的好处是:提高输入效率,减小网络负担。

由于用户一次输入的数据量一般情况下较小(不会超过几百条记录),所以临时表可以建立在内存中,这样处理速度较快。
方法1:使用查询控件(TQuery)
第1步:在窗体上放上查询控件(TQuery),设置好所连接的数据表。
第2步:使TQuery. CachedUpdates=True;
TQuery. RequestLive=True
第3步:在原有的SQL语句后加入一条Where子语句,要求加入这条Where子语句后SQL查询结果为空。
例如:
  SELECT Biolife.″Species No″, Category,Common_Name, Biolife.″Species Name″, Biolife.″Length (cm)″,
     Length_In, Notes, Graphic FROM ″biolife.db″ Biolife where Biolife.Category=′A′ and Biolife.Category=′B′
 这样临时表就建立完成了。

方法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;
临时表创建完成。

方法1使用简单,但由于利用查询控件,清空数据时需要查询服务器后台数据库,所以速度稍慢,而且不适用于临时表中各个字段由数个数据表的字段拼凑而成的情况。方法2适用范围广、速度快,但需要编写代码。(代码中TFieldDefs的使用方法十分简单,见Delphi的联机帮助)。

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B