關檔再開檔的速度 |
尚未結案
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
先說明一下元件結構如下
Form1視窗
數據庫pm3d←ADOConnection1←ADOTable1←DataSource1←DBGrid1
←ADOQuery1 數據庫用MS SQL SERVER資料為3萬多筆,查詢時數度非常快 但是當我儲存再開檔,並用DBGrid1重新顯示,速度卻特別慢,是否有別的方法 刪除的部份:
刪除後要等54秒才能繼續操作,是否有別的快速方法 procedure TForm1.SpeedButton7Click(Sender: TObject);
var
Emp_No: String;
begin
Emp_No := DataSource1.DataSet.FieldByName('A0').AsString;
ADOTable1.Active:=True;
ADOTable1.Locate('A0',Emp_No,[]); if messagedlg('確定要刪除?',mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
begin
ADOTable1.Delete;
ADOTable1.Active:=False;
ADOTable1.Active:=True;
DataSource1.DataSet :=ADOTable1;
DBGrid1.DataSource := DataSource1;
end;
end; 發表人 - jawtair 於 2003/05/23 23:23:23
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
1. 用 Table Delete做完後不用關掉重開的 2. 用另一 SQL 做
另外做一個 TADOQuery2
SQL 輸入 'delete from pm3d where A0 = :A0' Form 的 onCreate 或 onShow 加入 (非必要,但增加效率) :
TADOQuery2.Prepare;
procedure TForm1.SpeedButton7Click(Sender: TObject); var Emp_No: String; begin Emp_No := DataSource1.DataSet.FieldByName('A0').AsString; if messagedlg('確定要刪除?',mtConfirmation,[mbYes, mbNo], 0) = mrYes then begin ADOQuery2.Parameters.ParamByName('A0').AsString := Emp_No; ADPQuery2.ExecSQL; end; end; |
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |