全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1061
推到 Plurk!
推到 Facebook!

clientdataset 不可更新資料欄=null?

尚未結案
gloria.hk
一般會員


發表:18
回覆:17
積分:7
註冊:2005-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-07 17:49:29 IP:210.177.xxx.xxx 未訂閱
當我清空資料欄時(fields[i].value = null; 或 fields[i].clear), applyupdate 時發現 delta 並沒有記錄這項更改, 導致沒法更新資料庫 請問各位高手, 我可以怎麼辦?? 謝謝!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-07 21:40:20 IP:219.129.xxx.xxx 未訂閱
gloria.hk您好: 这是不是您所要的?
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Edit;
  ClientDataSet1.Fields[0].Clear;
  ClientDataSet1.ApplyRange;
  ClientDataSet1.Close;
  ClientDataSet1.Open;
end;
~~~静心养德~~~
gloria.hk
一般會員


發表:18
回覆:17
積分:7
註冊:2005-01-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-10 10:45:05 IP:210.177.xxx.xxx 未訂閱
謝謝,deity! 不過我想我的問題並不是關於ApplyRange。    以下是clientdataset 的fields and values: 【StudentCode】 【Name】 【Age】 S100............PETER.....10 S200............MARY......11 現在我想更改student S100 的Name and age: cds.edit; cds.FindField('Name').value := 'JOHN'; cds.FindField('Age').Clear; cds.post; cds.applyupdate; //←檢視delta 的內容 但我發現cds 的 delta(change log) 只記錄 name 的更改, 資料庫亦只更新了name一欄. 是否clientdataset 並不能夠更新null value??
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-10 15:46:33 IP:218.15.xxx.xxx 未訂閱
引言: 謝謝,deity! 不過我想我的問題並不是關於ApplyRange。 以下是clientdataset 的fields and values: 【StudentCode】 【Name】 【Age】 S100............PETER.....10 S200............MARY......11 現在我想更改student S100 的Name and age: cds.edit; cds.FindField('Name').value := 'JOHN'; cds.FindField('Age').Clear; cds.FindField('Age').value := '';//试试这样子 cds.post; cds.applyupdate; //←檢視delta 的內容 但我發現cds 的 delta(change log) 只記錄 name 的更改, 資料庫亦只更新了name一欄. 是否clientdataset 並不能夠更新null value?? < face="Verdana, Arial, Helvetica"> ~~~静心养德~~~
gloria.hk
一般會員


發表:18
回覆:17
積分:7
註冊:2005-01-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-10 15:52:17 IP:210.177.xxx.xxx 未訂閱
但numeric 或datetime fieldtype 卻不可能 set value := '';
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-10 17:16:38 IP:218.15.xxx.xxx 未訂閱
引言: 但numeric 或datetime fieldtype 卻不可能 set value := '';
cds.FindField('Age').asstring:='';//这样行不行,试试看 ~~~静心养德~~~
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-11 08:50:53 IP:218.80.xxx.xxx 未訂閱
这是Delta数据格式的限制,没有修改的栏位的它填NULL,因此你给NULL它会认为没有修改,如你的修改的delta结果:    【StudentCode】 【Name】 【Age】  S100            PETER    10  S100            JOHN     NULL    第一笔旧资料,第二笔新资料,这样Age会认为没有修改。     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
gloria.hk
一般會員


發表:18
回覆:17
積分:7
註冊:2005-01-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-11 09:33:27 IP:210.177.xxx.xxx 未訂閱
噢...那麼真的沒有辦法了?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-11 10:27:48 IP:218.15.xxx.xxx 未訂閱
引言: 噢...那麼真的沒有辦法了?
参考下列,小弟没多试过 >~~~静心养德~~~
系統時間:2024-05-19 5:39:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!