臨時表創(chuàng)建
發(fā)表時間:2024-06-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]數(shù)據(jù)輸入是開發(fā)數(shù)據(jù)庫程序的必然環(huán)節(jié)。在Client/Server結構中,客戶端可能要輸入一批數(shù)據(jù)后,再向服務器的后臺數(shù)據(jù)庫提交,這就需要在本地(客戶端)建立臨時數(shù)據(jù)表來存儲用戶輸入的數(shù)據(jù),待提交后,清除本地數(shù)據(jù)表。這種方法的好處是:提高輸入效率,減小網(wǎng)絡負擔。 由于用戶一次輸入的數(shù)據(jù)量一般情況...
數(shù)據(jù)輸入是開發(fā)數(shù)據(jù)庫程序的必然環(huán)節(jié)。在Client/Server結構中,客戶端可能要輸入一批數(shù)據(jù)后,再向服務器的后臺數(shù)據(jù)庫提交,這就需要在本地(客戶端)建立臨時數(shù)據(jù)表來存儲用戶輸入的數(shù)據(jù),待提交后,清除本地數(shù)據(jù)表。這種方法的好處是:提高輸入效率,減小網(wǎng)絡負擔。
由于用戶一次輸入的數(shù)據(jù)量一般情況下較小(不會超過幾百條記錄),所以臨時表可以建立在內(nèi)存中,這樣處理速度較快。臨時表創(chuàng)建有如下兩種方法:
1.使用查詢控件創(chuàng)建臨時表
第1步:在窗體上放入查詢控件(TQuery),并設置好所連接的數(shù)據(jù)表。
第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.使用代碼創(chuàng)建臨時表
函數(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(′Name′,ftString,30,False);
Add(′Value′,ftInteger,0,False);
end;
with DataSource1 do
begin
DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
DataSet.Open;
end;
ADataSet.Free;
end;
這樣,臨時表就創(chuàng)建完成。
方法1使用簡單,但由于利用了查詢控件,清空數(shù)據(jù)時需要查詢服務器后臺數(shù)據(jù)庫,所以速度稍慢,而且不適用于臨時表中各個字段由幾個數(shù)據(jù)表的字段拼湊而成的情況。方法2適用范圍廣、速度快,但需要編寫代碼。