用Delphi开发数据库程序经验三则2008-03-261.建立临时表数据输入是开发数据库程序的必然环节。在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$#@60;$#@62;nil then begin try TempTable:=TClientDataSet.Create(Application); TempTable.FieldDefs.Assign(AFieldDefs); TempTable.CreateDataSet; Result:=(TempTable as TDataSet); Except if TempTable$#@60;$#@62;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(′ ue′,ftInteger,0,False); end; with DataSource1 do begin DataSet:=CreateTableInMemory(ADataSet.FieldDefs); DataSet.Open; end; ADataSet.Free; end;临时表创建完成。方法1使用简单,但由于利用查询控件,清空数据时需要查询服务器后台数据库,所以速度稍慢,而且不适用于临时表中各个字段由数个数据表的字段拼凑而成的情况。方法2适用范围广、速度快,但需要编写代码。(代码中TFieldDefs的使用方法十分简单,见Delphi的联机帮助)。