ADO設計的問題請教!(100分)

  • 主题发起人 newsailor
  • 开始时间
N

newsailor

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)] 我想在刪除主檔記錄的同時,連同明細檔案一起刪除,
并且要求存盤方式是批量提交的,該如何實現?謝了先.
(假設主檔數据集:Qry_Master,明細檔為:Qry_Detail)
如果有個主從關系的例子,感激不盡![:)]
 
在Qry_Master 的Ondelete事件中,执行
delete from subtable where id=:avlaue //当前选中行的关连字段
commit

 
建议使用SQL 2000,在内建一个关系即可。
 
這個沒問題,只是這個死大富翁,一按Esc鍵又要我重寫了.
呵呵.
1.可以用TADOConnection對象的事務處理功能
2.可以用TADODataSet對象的批量更新處理.
基本用法請等等,先提交了再說(怕萬一不小心又按了ESC鍵)
 
具体代碼如下:
在主檔數据集Qry_Master的OnBeforedelete事件中:
procedure TForm1.Qry_MasterBeforeDelete(DataSet: TDataSet);
begin
If not (Qry_Detail.State in [dsEdit,dsInsert]) then
begin
with Qry_Detail do
begin
try
DisableControls;
First;
while not Qry_Detail.eof do
Begin
delete;
next;
End;
finally
EnableControls;
end;
end;
end;

If Application.MessageBox('是否確定刪除當前主檔記錄?','',MB_YESNO or mb_iconQuestion or
MB_DEFBUTTON2)<>IDYES then Abort;
end;

單擊保存按鈕:
procedure TForm1.Button1Click(Sender: TObject);
begin
Qry_Detail.UpdateBatch;
Qry_Master.UpdateBatch;
end;

結果是主檔記錄刪除成功,但明細檔一條都沒有刪除成功!請大蝦指點!
 
1.TADOConnection
打開一個事務
Adoconnection1.begintrans;
確認事務
Adoconnection1.commitTrans;
取消
Adoconnection1.RollbackTrans;

2.TADODataSet
將Locktype屬性設為 ItBatchOptimistic
批量更新
adodataset1.updatebatch(arAll);
批量取消
adodataset1.cancelBatch(arAll);

第二種方法只能用於Select開頭的SQL指令

簡單吧!
 
哦,照你的說法我看只有
Delete From dataname where 條件
這樣刪除了.
 
難道ADO批量提交的方式真的不可以實現主從表的刪除嗎?大蝦們出招啊!
 
顶部