一個ADOdataset 問題 |
尚未結案
|
lvluyang
一般會員 發表:18 回覆:9 積分:5 註冊:2004-09-28 發送簡訊給我 |
問題是這樣子的﹕
我用兩個ADODATASET做主從表的連接﹐主表連的是adodataset1,從表連接的是adodataset2 關聯的字段為serialNO,在做刪除主表的記錄時對應的從表記錄也應該被刪除﹐我是先刪除從表然后再刪除主表的﹐在刪除從表的記錄后資料庫里還是存在一條記錄﹐那條記錄僅僅主從表的關聯字SerialNO字段有值,其它的為空﹐我中在主表的adodataset1的beforedelete的事件里寫代碼刪除對應從表記錄的﹕
var i:integer;
begin
with dm.ADODataSet2 do
if not isempty then
begin
first;
for i :=0 to RecordCount-1 do
begin
delete;
edit;
post;
end;
end;
為什么刪除不干淨呢﹖﹐請問在做主從表的刪除動作應該怎樣寫﹖謝謝﹗
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
引言: 問題是這樣子的﹕ 我用兩個ADODATASET做主從表的連接﹐主表連的是adodataset1,從表連接的是adodataset2 關聯的字段為serialNO,在做刪除主表的記錄時對應的從表記錄也應該被刪除﹐我是先刪除從表然后再刪除主表的﹐在刪除從表的記錄后資料庫里還是存在一條記錄﹐那條記錄僅僅主從表的關聯字SerialNO字段有值,其它的為空﹐我中在主表的adodataset1的beforedelete的事件里寫代碼刪除對應從表記錄的﹕ var i:integer; begin with dm.ADODataSet2 do if not isempty then begin first; for i :=0 to RecordCount-1 do begin delete; edit; post; end; end; 為什么刪除不干淨呢﹖﹐請問在做主從表的刪除動作應該怎樣寫﹖謝謝﹗你注意这句:for i :=0 to RecordCount-1 do 因为你在删除,RecordCount一直在变!最后RecordCount变成1的时候,也就是你还有一条的时候,RecordCount-1=0,for循环就停止了。 FishMan的说法才是正解。通常使用 TDataSet及其派生类,要遍历所有记录的话,一般都这样写: DataSet1.First; while not DataSet1.Eof do begin //do something... DataSet1.Next; //如果不是删除的话,一定要这一句!否则永远走不出这个 while 了。 end; |
lvluyang
一般會員 發表:18 回覆:9 積分:5 註冊:2004-09-28 發送簡訊給我 |
|
zhongguoren1997
一般會員 發表:9 回覆:10 積分:3 註冊:2004-09-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |