無法刪除檔案內的資料 |
尚未結案
|
cosin
一般會員 發表:16 回覆:10 積分:5 註冊:2004-11-12 發送簡訊給我 |
在一個檔案中有多筆欄位值一模一樣的RECORD , 該如何刪除資料只保留一筆! 下列是我測試的結果 : 無效
.
.
.
Open;
First;
While (Not dm1.queryconfirm.EOF) Do
Begin
If (DM1.QueryConfirm.FieldByName('acode').Value = Xcode) And (DM1.QueryConfirm.FieldByName('aabs').Value = Xabs) And (DM1.QueryConfirm.FieldByName('asdate').Value = Xsdate) And (DM1.QueryConfirm.FieldByName('aedate').Value = Xedate) And (DM1.QueryConfirm.FieldByName('aday').Value = Xday) And (DM1.QueryConfirm.FieldByName('ahour').Value = Xhour) And (DM1.QueryConfirm.FieldByName('asspec').Value = Xspec) And (DM1.QueryConfirm.FieldByName('seq').Value = Xseq) Then
begin
DM1.QueryConfirm.Delete;
end else
begin
Xcode := DM1.QueryConfirm.FieldByName('acode').Value;
Xabs := DM1.QueryConfirm.FieldByName('aabs').Value;
Xsdate := DM1.QueryConfirm.FieldByName('asdate').Value;
Xedate := DM1.QueryConfirm.FieldByName('aedate').Value;
Xday := DM1.QueryConfirm.FieldByName('aday').Value;
Xhour := DM1.QueryConfirm.FieldByName('ahour').Value;
Xspec := DM1.QueryConfirm.FieldByName('asspec').Value;
Xseq := DM1.QueryConfirm.FieldByName('seq').Value;
end;
DM1.Queryconfirm.Next ;
End; 如何修改煩請指教 ,或可直接下SQL指令!? 黃建道
------
黃建道 |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 試試看這樣﹕
//先Select出整個資料表中的單一資料后﹐新增到一個新的資料表中﹕ begin dm1.queryconfirm.Close; dm1.queryconfirm.SQL.Clear; dm1.queryconfirm.SQL.Add('Select Distinct * Into NewTable '); dm1.queryconfirm.SQL.Add('From 舊資料表名稱'); dm1.queryconfirm.ExecSQL; //此時﹐NewTable中即是需要的資料內容﹒ //接下來的工作可以將舊資料表中的內容清空﹐然后再將NewTable中的資料 //Insert到舊資料表中即可 dm1.queryconfirm.Close; dm1.queryconfirm.EmptyTable; //清空資料表 //上句中﹐清空資料表的工作也可用SQL語法來做﹐如下紅色句﹕ //dm1.SQL.Clear; //dm1.SQL.Add('Delete From 舊資料表名稱'); //dm1.ExecSQL; dm1.queryconfirm.SQL.Clear; dm1.queryconfirm.SQL.Add('Insert Into 舊資料表名稱 Select * '); dm1.queryconfirm.SQL.Add('From NewTable'); dm1.queryconfirm.ExecSQL; dm1.queryconfirm.DeleteTable; //刪除資料表 //上句中﹐刪除資料表的工作也可用SQL語法來做﹐如下紅色句﹕ //dm1.SQL.Clear; //dm1.SQL.Add('Drop Table 舊資料表名稱'); //dm1.ExecSQL; end;========================= 我是您的朋友﹐有您真好﹗ ========================= 發表人 - cashxin2002 於 2004/11/19 17:57:32
------
忻晟 |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
感謝supman兄的提醒﹐小弟也有過效率方面的考慮﹐所以小弟在上萬筆的資料庫
(Access2000)中做了如上的測試﹐結果在效率上并未有明顯的下降﹐所以應
可試試看﹒
也曾考慮過加一個流水編號欄位﹐但后來考慮如果使用Access等無直接賦值功能的資料庫形態﹐因為其沒有直接賦流水編號值的功能﹐所以還是需要透過迴圈將
流水編號填入﹐再做下續的動作﹐當資料量大的時候﹐同樣會有效率上的問題﹒
個人意見﹐敬請糾正﹒ =========================
我是您的朋友﹐有您真好﹗
=========================
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |