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

Data Control 離開後, 沒有更新 dataset 的內容

答題得分者是:herbert2
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-11-01 13:59:35 IP:1.34.xxx.xxx 訂閱
大家好

我碰到一個問題, 我的 foucus 在 TDBEdit, 原來是 01, 修改成 02 以後, 直接用滑鼠點存檔 button,

為什麼在 button 的 click event, dataset.FieldByName('ZZZ').AsString, 所讀到的值還是舊的, 01,

而不是 02,

請有甚麼好方法, 或是可以用 dataset 的哪一個 procedure 重新讀取一次 data controls 的資料到 dataset 裡面 ?
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-11-01 15:12:43 IP:59.120.xxx.xxx 未訂閱
我猜你應該是在游標還在DBEdit時就按下Save的Button

code應該可以這樣試試
ShowMessage(DataSet.FieldByName('ZZZ').AsString);
DataSet.Post();
ShowMessage(DataSet.FieldByName('ZZZ').AsString);

看看是否還會有這樣的問題出現。

===================引 用 tuga 文 章===================
大家好

我碰到一個問題, 我的 foucus 在 TDBEdit, 原來是 01, 修改成 02 以後, 直接用滑鼠點存檔 button,

為什麼在 button 的 click event, dataset.FieldByName('ZZZ').AsString, 所讀到的值還是舊的, 01,

而不是 02,

請有甚麼好方法, 或是可以用 dataset 的哪一個 procedure 重新讀取一次 data controls 的資料到 dataset 裡面 ?
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-11-01 15:27:51 IP:1.34.xxx.xxx 訂閱
恩恩 第一次 Show 出來是 01, 第二次是 02,
我已經把 Code 寫到 BeforePost 了, 顯然 BeforePost 時, 已經將 TDBEdit 的 Text 寫回 Dataset 了

只是 覺得 TDBEdit 在 LostFocus 時, 應該就把資料填回 dataset 了
就好像 C# 在 DataBing 時可以指定當資料有變時, 傳回 datatable



===================引 用 GrandRURU 文 章===================
我猜你應該是在游標還在DBEdit時就按下Save的Button

code應該可以這樣試試
ShowMessage(DataSet.FieldByName('ZZZ').AsString);
DataSet.Post();
ShowMessage(DataSet.FieldByName('ZZZ').AsString);

看看是否還會有這樣的問題出現。

===================引 用 tuga 文 章===================
大家好

我碰到一個問題, 我的 foucus 在 TDBEdit, 原來是 01, 修改成 02 以後, 直接用滑鼠點存檔 button,

為什麼在 button 的 click event, dataset.FieldByName('ZZZ').AsString, 所讀到的值還是舊的, 01,

而不是 02,

請有甚麼好方法, 或是可以用 dataset 的哪一個 procedure 重新讀取一次 data controls 的資料到 dataset 裡面 ?
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-11-05 10:01:29 IP:202.39.xxx.xxx 訂閱
小弟猜的:

您用的 Button 是無 Focus 的 TSpeedButton,所以焦點並未離開 TDBEdit。
若用的是有 Focus 的 TButton 或 TBitBtn,焦點就會離開 TDBEdit,其新值就會寫入 TDataSet。

第一次 ShowMessage() ,讀 TDataSet 值時,焦點尚未離開 TDBEdit。
第二次 ShowMessage() ,焦點已於第一次 ShowMessage() 的 Form ShowModal() 時離開 TDBEdit,故讀 TDataSet 值會得其新值。
編輯記錄
herbert2 重新編輯於 2013-11-05 10:06:14, 註解 無‧
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-11-05 10:07:58 IP:1.34.xxx.xxx 訂閱
恩恩 果然是內行人 , 
問題在於我們以為 focus 應該是移到 SpeedButton 上, 資料要寫回 dataset 了,




===================引 用 herbert2 文 章===================
小弟猜的:

您用的 Button 是無 Focus 的 TSpeedButton,所以焦點並未離開 TDBEdit。
若用的是有 Focus 的 TButton 或 TBitButton,焦點就會離開 TDBEdit,其新值就會寫入 TDataSet。

第一次 ShowMessage() ,讀 TDataSet 值時,焦點尚未離開 TDBEdit。
第二次 ShowMessage() ,焦點已於第一次 ShowMessage() 的 Form ShowModal() 時離開 TDBEdit,故讀 TDataSet 值會得其新值。
系統時間:2017-12-14 14:23:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!