数据提交到服务器后,在中间层所做的修改,能及时反应到客户端 |
尚未結案
|
DKSoftCHS
一般會員 發表:5 回覆:13 積分:3 註冊:2004-07-24 發送簡訊給我 |
我在客户端按下ApplayUpdate(-1)后。
在中间层的DataProvder的OnUpdateData里写了如下代码
procedure TFDM_BASE.DspCustSortCodeUpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin inherited; with DataSet do begin First; while not Eof do begin if UpdateStatus = usInserted then begin Edit; FieldByName('UpBuildTime').AsDateTime := Now(); Post; end; Next; end; end; end;我想把中间层对数据所做的修改(即UpBuildTime)在客户端更新数据后可以看到对UpBuildTime做的改动。 發表人 - DKSoftCHS 於 2004/08/18 08:09:37 |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
1.如果想在AP端改值後,Client會自動合併新值,做法如下
首先將DataSetProvider的Options的poPropogateChanges設成True
接著在BeforeUpdateRecord/AfterUpdateRecord事件中將新值寫回欄位(TField)的NewValue(像你寫在OnUpdateData事件中恐怕是不行的請改寫在BeforeUpdateRecord,且BeforeUpdateRecord每異動筆就呼叫一次所以可以把while控制拿掉)
請參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46216
eg. procedure TFDM_BASE.DspCustSortCodeBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); var currTime:TDateTime; begin if UpdateKind= ukInsert then begin currTime := Now; DeltaDS.FieldByName('UpBuildTime').AsDateTime := currTime; DeltaDS.FieldByName('UpBuildTime').NewValue := currTime; end; end;2.另外一種比較簡單但較沒效率的作法就是你每次client異動一筆資料後馬上下ApplyUpdate並接著執行RefreshRecord 混心雜欲 棄修身~唉 發表人 - speedup 於 2004/08/18 09:23:02 [ 發表人 - speedup 於 2004/08/18 09:30:22 發表人 - speedup 於 2004/08/18 09:31:44
------
唉~ |
DKSoftCHS
一般會員 發表:5 回覆:13 積分:3 註冊:2004-07-24 發送簡訊給我 |
|
DKSoftCHS
一般會員 發表:5 回覆:13 積分:3 註冊:2004-07-24 發送簡訊給我 |
|
Chelen.Jak
一般會員 發表:2 回覆:11 積分:7 註冊:2004-05-07 發送簡訊給我 |
引言: 1.如果想在AP端改值後,Client會自動合併新值,做法如下 首先將DataSetProvider的Options的poPropogateChanges設成True 接著在BeforeUpdateRecord/AfterUpdateRecord事件中將新值寫回欄位(TField)的NewValue(像你寫在OnUpdateData事件中恐怕是不行的請改寫在BeforeUpdateRecord,且BeforeUpdateRecord每異動筆就呼叫一次所以可以把while控制拿掉) 請參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46216 eg. procedure TFDM_BASE.DspCustSortCodeBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); var currTime:TDateTime; begin if UpdateKind= ukInsert then begin currTime := Now; DeltaDS.FieldByName('UpBuildTime').AsDateTime := currTime; DeltaDS.FieldByName('UpBuildTime').NewValue := currTime; end; end; 2.另外一種比較簡單但較沒效率的作法就是你每次client異動一筆資料後馬上下ApplyUpdate並接著執行RefreshRecord 混心雜欲 棄修身~唉 發表人 - speedup 於 2004/08/18 09:23:02 [ 發表人 - speedup 於 2004/08/18 09:30:22 發表人 - speedup 於 2004/08/18 09:31:44procedure TFDM_BASE.DspCustSortCodeBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); var currTime:TDateTime; begin if UpdateKind= ukInsert then begin currTime := Now; DeltaDS.Edit; DeltaDS.FieldByName('UpBuildTime').AsDateTime := currTime; DeltaDS.FieldByName('UpBuildTime').NewValue := currTime; DeltaDS.Post; end; end; |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |