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

如何不觸發 OnExit 而將資料寫入 Table 裡

尚未結案
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-19 06:07:35 IP:61.70.xxx.xxx 未訂閱
各位大大: 當我在修改一筆資料時,當游標停在某一個欄位做修改資料時,此時如果使用者去按存檔,因為此欄位並無法順利的執行到 OnExit 事件,所以資料並不會真正寫入,此時 TClientDataSet.FieldByName('aaa').Value=Null ,所以在 pos前無法針對此欄位的值做判斷,而無又不想用模擬按鍵去執行跳往下一個欄位的動作,因為我在 OnExit 另有寫一此事作,我的用意只是要在存檔前判斷此筆資料是否重覆,如果去執行時會先跳出我在 OnExit 中寫的檢查鍵值不可空白的程式, 也就是我希望能透過程式把目前在 TDBEdit 上的資料寫入該新增時的 Record 裡,而不觸發 OnExit 謝謝,希望這樣的描述大家看的懂 ps:我的 POS 按鍵是 TSpeedButton 所以並不會讓 TDBEdit 的 Focus 轉移 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-19 08:47:31 IP:210.65.xxx.xxx 未訂閱
Hi thomas0728,    不知是否有誤解你的意思
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  If ClientDataSet1.State in [dsInsert,dsEdit] then
    begin
      ClientDataSet1.FieldByName(DBEdit1.DataField).AsString :=  DBEdit1.Text;
      ClientDataSet1.ApplyUpdates(-1);
    end;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-19 16:19:11 IP:211.75.xxx.xxx 未訂閱
確實有點麻煩,事實上我是用 TcxDBTextEdit....等控制元件 使用 TCxDBTextEdit(ActiveControl).Text; 可以得到值沒錯 但用 cdsBillHead.FieldByName(TDBEdit(ActiveControl).DataField).AsString 却會有問題,因是取到值把,也就是我無法今 cdsBillHead.FieldByName(TDBEdit(ActiveControl).DataField).AsString:=TCxDBTextEdit(ActiveControl).Text; 不知錯在那 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
evanskang
一般會員


發表:6
回覆:7
積分:2
註冊:2004-03-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-31 21:09:21 IP:220.133.xxx.xxx 未訂閱
你不是可以把寫在ONEXIT中的程式碼改寫在存檔紐上嗎?
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-31 22:25:37 IP:218.160.xxx.xxx 未訂閱
引言: 各位大大: 當我在修改一筆資料時,當游標停在某一個欄位做修改資料時,此時如果使用者去按存檔,因為此欄位並無法順利的執行到 OnExit 事件,所以資料並不會真正寫入,此時 TClientDataSet.FieldByName('aaa').Value=Null ,所以在 pos前無法針對此欄位的值做判斷,而無又不想用模擬按鍵去執行跳往下一個欄位的動作,因為我在 OnExit 另有寫一此事作,我的用意只是要在存檔前判斷此筆資料是否重覆,如果去執行時會先跳出我在 OnExit 中寫的檢查鍵值不可空白的程式, 也就是我希望能透過程式把目前在 TDBEdit 上的資料寫入該新增時的 Record 裡,而不觸發 OnExit 謝謝,希望這樣的描述大家看的懂 ps:我的 POS 按鍵是 TSpeedButton 所以並不會讓 TDBEdit 的 Focus 轉移 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
1: 打開TClientDataSet的欄位編輯器 找到你要的欄位 然後有一個 onValidate事件 把你要做此筆資料是否重覆的判斷的程式碼 寫在裡面 就可以了 2: 你之所以會觸發OnExit事件 是因為TDBEdit.text := ''所引起的 如果有資料 自然不會觸發OnExit事件 另外補充一點 : 需要作判斷的 盡量不要寫在OnExit事件 這樣會造成某種程度的不方便 你可以寫在存檔紐裡面 或onBeforePost事件裏會較理想 當然 如果因為某種因素非要寫在OnExit事件 也不是不行啦 不知道有沒有誤會你的意思 天行健 君子當自強不息~~@.@ 發表人 - t.j.b 於 2004/08/31 22:32:14
------
天行健
君子當自強不息~~@.@
william
版主


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

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