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

請問TClientDataSet.State問題?

答題得分者是:speedup
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-14 13:13:27 IP:61.218.xxx.xxx 未訂閱
請問TClientDataSet.State問題? cds1: TClientDataSet; cds2: TClientDataSet; 請問 cds1.State <= dsInsert 原本在新增狀態 但經下列運作後 cds2.Data := cds1.Data; cds1.State 的狀態已不在原本的新增狀態, 請問如何保留住cds1.State? Delphi Man
------
Delphi
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-14 13:26:54 IP:147.8.xxx.xxx 未訂閱
>>
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-14 14:22:24 IP:61.218.xxx.xxx 未訂閱
var
 mystate: TDataSetState;
begin
 mystate := cds1.State;
 cds2.Data := cds1.Data;
 if (mysatae = dsEdit) then cds1.Edit;
 if (mystate = dsInsert) then cds1. <==== ????
 myprocess(cds2);  //分析函式
end;
請問如何重新讓cds1進入dsInsert狀態?
 
Delphi Man
------
Delphi
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-14 14:36:31 IP:147.8.xxx.xxx 未訂閱
引言:
var
 mystate: TDataSetState;
begin
 mystate := cds1.State;
 cds2.Data := cds1.Data;
{ cds1 is POSTED afterward }
 if (mysatae = dsEdit) then cds1.Edit;
 if (mystate = dsInsert) then cds1. <==== ????
 myprocess(cds2);  //分析函式
end;
請問如何重新讓cds1進入dsInsert狀態?
 
Delphi Man
The inserted record has been posted after your access to its Data property. You can make it into dsInsert state by inserting another record and I think this is not what you want.
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-14 14:58:51 IP:218.16.xxx.xxx 未訂閱
1. 使用 cds1.Edit; 除了不能取消 insert 外 (因為已 post 了),其他的 dbEdit 和 dsInsert 分別不大 2. 先記起各 Field 的值,cds1.Cancel 後才 cds2.Data := cds1.Data; ,之後再 insert 及埴入剛才的值,會很煩但可保留 dbInsert 狀態 3. cds2.Data := cds1.Data; 前先問使用者是否 post, 是則 post 了他事後 Edit, 否則 Cancel 他事後不作處理或insert 一筆新記錄。
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-14 15:45:08 IP:61.218.xxx.xxx 未訂閱
小弟用TClientDataSet.CanceUpdate來取代DataSet.Cance 所以容許cds2.Data := cds1.Data有DataSet.Post 只是小弟不懂如何再次進入dsInsert狀態? Delphi Man
------
Delphi
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-15 10:26:32 IP:210.243.xxx.xxx 未訂閱
用CloneCursor啦,這樣cds1 cursor狀態根本都不會變 cds2.CloneCursor(cds1,False,True); myprocess(cds2); //分析函式 唉~
------
唉~
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-15 10:54:51 IP:61.218.xxx.xxx 未訂閱
妙!果真如此! Delphi Man
------
Delphi
系統時間:2024-05-18 20:36:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!