明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

臨時(shí)表創(chuàng)建

[摘要]數(shù)據(jù)輸入是開(kāi)發(fā)數(shù)據(jù)庫(kù)程序的必然環(huán)節(jié)。在Client/Server結(jié)構(gòu)中,客戶(hù)端可能要輸入一批數(shù)據(jù)后,再向服務(wù)器的后臺(tái)數(shù)據(jù)庫(kù)提交,這就需要在本地(客戶(hù)端)建立臨時(shí)數(shù)據(jù)表來(lái)存儲(chǔ)用戶(hù)輸入的數(shù)據(jù),待提交后,清除本地?cái)?shù)據(jù)表。這種方法的好處是:提高輸入效率,減小網(wǎng)絡(luò)負(fù)擔(dān)。   由于用戶(hù)一次輸入的數(shù)據(jù)量一般情況...
數(shù)據(jù)輸入是開(kāi)發(fā)數(shù)據(jù)庫(kù)程序的必然環(huán)節(jié)。在Client/Server結(jié)構(gòu)中,客戶(hù)端可能要輸入一批數(shù)據(jù)后,再向服務(wù)器的后臺(tái)數(shù)據(jù)庫(kù)提交,這就需要在本地(客戶(hù)端)建立臨時(shí)數(shù)據(jù)表來(lái)存儲(chǔ)用戶(hù)輸入的數(shù)據(jù),待提交后,清除本地?cái)?shù)據(jù)表。這種方法的好處是:提高輸入效率,減小網(wǎng)絡(luò)負(fù)擔(dān)。

  由于用戶(hù)一次輸入的數(shù)據(jù)量一般情況下較小(不會(huì)超過(guò)幾百條記錄),所以臨時(shí)表可以建立在內(nèi)存中,這樣處理速度較快。臨時(shí)表創(chuàng)建有如下兩種方法:

 1.使用查詢(xún)控件創(chuàng)建臨時(shí)表
  第1步:在窗體上放入查詢(xún)控件(TQuery),并設(shè)置好所連接的數(shù)據(jù)表。
  第2步:添加如下語(yǔ)句:
  TQuery. CachedUpdates=True;
  TQuery. RequestLive=True。
 第3步:在原有的SQL語(yǔ)句后加入一條Where子語(yǔ)句,要求加入這條Where子語(yǔ)句后SQL查詢(xún)結(jié)果為空。
  例如:
  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′
  這樣臨時(shí)表就建立好了。
  2.使用代碼創(chuàng)建臨時(shí)表
  函數(shù)代碼如下:
  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;
  在程序中按如下方法調(diào)用:
  procedure TForm1.Button1Click(Sender: TObject);
  var ADataSet:TDataSet;
  begin
  ADataSet:=TDataSet.Create(Self);
  with ADataSet.FieldDefs do
  begin
  Add(′N(xiāo)ame′,ftString,30,False);
  Add(′Value′,ftInteger,0,False);
  end;
  with DataSource1 do
  begin
  DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
  DataSet.Open;
  end;
  ADataSet.Free;
  end;
  這樣,臨時(shí)表就創(chuàng)建完成。
  方法1使用簡(jiǎn)單,但由于利用了查詢(xún)控件,清空數(shù)據(jù)時(shí)需要查詢(xún)服務(wù)器后臺(tái)數(shù)據(jù)庫(kù),所以速度稍慢,而且不適用于臨時(shí)表中各個(gè)字段由幾個(gè)數(shù)據(jù)表的字段拼湊而成的情況。方法2適用范圍廣、速度快,但需要編寫(xiě)代碼。