線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1322
推到 Plurk!
推到 Facebook!

在BeforeUpdateRecord自行處理更新,錯誤訊息被吃掉?

尚未結案
wb3599
一般會員


發表:32
回覆:32
積分:12
註冊:2004-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-03 17:54:21 IP:61.230.xxx.xxx 未訂閱
請問大家: 我照李維大師書本的做法, 把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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-04 01:42:46 IP:203.204.xxx.xxx 未訂閱
引言: 在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的錯誤訊息啦!!。
系統時間:2024-10-03 1:19:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!