臨時(shí)表創(chuàng)建
發(fā)表時(shí)間:2024-02-17 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]數(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ě)代碼。