在BeforeUpdateRecord自行處理更新,錯誤訊息被吃掉? |
尚未結案
|
wb3599
一般會員 發表:32 回覆:32 積分:12 註冊:2004-02-11 發送簡訊給我 |
請問大家:
我照李維大師書本的做法, 把TDataSetProvider的ResolveToDataSet改True,在BeforeUpdateRecord事件自己寫更新的程式碼:
try
...
applied := true;
except
aoolied := false;
end;
若發生錯誤, 不管是在TDataSetProvider的OnUpdateErroe或TClientDataSet的OnReconcileError, 為什麼都只會出現Cannot modify a read-only dataset的錯誤訊息? 原來的錯誤訊息怎麼不見了?
謝謝大家的幫忙!
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 在BeforeUpdateRecord事件自己寫更新的程式碼: try ... applied := true; except aoolied := false; end;wb3599 你好 假設上述...的部份都沒有執行時的錯誤,那麼Applied:=True;則DataSetProvider就不再更新這筆Record,所以也就完成更新動作了,但是...部份的程式若有舉發錯誤,那麼Applied:=False;到此應用程式還看不到錯誤,而DatasetProvider會將此筆記錄交由其所連結的Dataset來更新,此時就要看言個DataSet是否可以更新此筆資料囉! 一般會用到BeforeUpdateRecord事件,是DataSetProvider或所連結的DataSet無法處理更新資料(如關聯資料表的更新),才會在此事件中自己處理新資料或某些欄位(log相關的欄位)須由系統自動填值時;以你的狀況應該是前面一種狀況才對吧! 結論就是...部份的程式發生錯誤,以至於Applied被設為False之後交給DataSetProvider去更新資料,偏偏DataSetProvider並無法處理資料的更新的動作(原因很多如ClientDataSet.CommandText有用到多個檔案的關聯、有用到IN、Group by、或一些集總函數或Server端使用TQuery而RequestLive沒設成True........)所以就告訴你Cannot modify a read-only dataset的錯誤訊息啦!!。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |