MySQL(ODBC) + ADO的Master Detail刪除問題 |
尚未結案
|
stacker_liew
中階會員 發表:59 回覆:168 積分:65 註冊:2004-05-17 發送簡訊給我 |
我用MySQL(ODBC) ADO做了一個Master Detail的資料庫,元件如下: MyAddressADOConnection
UserProfileADOTable
PaymentADOTable
UserProfileDataSource
PaymentDataSource MySQL資料庫是myaddress,有兩個表格:
userprofiletable: UserProfileID, UserProfileName, UserProfilePassword, UserProfilePerm paymenttable: PaymentID, UserProfileID, PaymentAmount 這兩個表格我都已經設好在上面兩個ADOTable元件裡,並且其屬性都已經設好… 現在問題是表格正常運作,但在刪除表格時郤不正常了…
在主表格新增一記錄後,然後在副表格輸入數筆記錄,一切都很正常… 但完成後,再把剛剛新增的主表格記錄刪除,可以刪除,但副表格裡的記錄郤還在? 有何方法解決這個問題,我知道DELPHI對MySQL的實作並不理想,但不懂要如何解決這個問題?
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 一些建議﹐供參考﹒
Step1. 在對應主表格的ADOTable元件的BeforeDelete事件中﹐先記錄下 當前欲刪除資料的Primary欄位值﹐如下﹕ 變數需宣告在全域區﹐此處舉例為字串形態 Private MyStr : String; ... ADOTable1之BeforeDelete事件中﹐此處舉例Primary欄位的序號為第一個 begin MyStr := ADOTable1.Fiels[0].AsString; end; Step2. 在對應主表格的ADOTable元件的AfterDelete事件中﹐使用剛才記錄的 字串變數值﹐在對應副表格的ADOTable元件中做刪除的動作 begin ADOTable2.First; While Not ADOTable2.Eof do begin if ADOTable2.Locate('欄位名稱', MyStr, [loCaseInsensitive]) then ADOTable2.Delete; end; ADOTable2.Close; ADOTable2.Open; end; 不過﹐在此使用Locate方法是一個比較沒有效率的方法﹐建議您使用ADOQuery 元件﹐利用其SQL指令﹐能做到效率上的提升 begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Delete From 副表格 Where 欄位名稱=''' MyStr ''''); ADOQuery1.ExecSQL; ADOTable2.Close; ADOTable2.Open; end;========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟 |
stacker_liew
中階會員 發表:59 回覆:168 積分:65 註冊:2004-05-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |