OnCalcField事件的應用 |
尚未結案
|
Code168
一般會員 ![]() ![]() 發表:16 回覆:11 積分:5 註冊:2003-02-11 發送簡訊給我 |
各位偉大的先生/女仕:
當欄位的值為另一些欄位的值運算得來的結果時,是否應使用OnCalcField事件最為合適呢?
我作了一個試練, 有Field A,B,C; C=A B;我在OnCalcField事件下,加入以下Code:
with DataSource1.dataset do
begin
fieldbyname('C').value:=fieldbyName('A').value fieldbyName('B').value;
end; 我心想更改A,B的值,C會自動改變,但結果非也!我想請教各位先知,是我對OnCalcField的事件理解不對,還是另有錯誤之處! 謝謝! 1. 思考,放鬆,再思考!
2. 練習,學習,再練習!
3, 請教,改錯,再請教!
4. 創新,改進,再創新!
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 各位偉大的先生/女仕: 當欄位的值為另一些欄位的值運算得來的結果時,是否應使用OnCalcField事件最為合適呢? 我作了一個試練, 有Field A,B,C; C=A B;我在OnCalcField事件下,加入以下Code: with DataSource1.dataset do begin fieldbyname('C').value:=fieldbyName('A').value fieldbyName('B').value; end; 我心想更改A,B的值,C會自動改變,但結果非也!我想請教各位先知,是我對OnCalcField的事件理解不對,還是另有錯誤之處! 謝謝! 1. 思考,放鬆,再思考! 2. 練習,學習,再練習! 3, 請教,改錯,再請教! 4. 創新,改進,再創新!您的用法沒有錯,只是: 您的Field C是Calculated Field也就是您要虛擬一個欄位。 如果不是的話,當然不行。 方法如下:也就是New一Field,Field Type選擇Calculated。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
chih
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
fieldbyName('A')->DBEdit1
fieldbyName('B')->DBEdit2
fieldbyName('C')->DBEdit3
在DBEdit1Exit,然後將DBEdit2.Edit指向DBEdit1Exit.
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
if DataSource1.dataset.State=dsBrowse then exit;
with DataSource1.dataset do
begin
fieldbyname('C').value:=fieldbyName('A').value fieldbyName('B').value;
end; end;
TRY TRY SEE
引言: 各位偉大的先生/女仕: 當欄位的值為另一些欄位的值運算得來的結果時,是否應使用OnCalcField事件最為合適呢? 我作了一個試練, 有Field A,B,C; C=A B;我在OnCalcField事件下,加入以下Code: with DataSource1.dataset do begin fieldbyname('C').value:=fieldbyName('A').value fieldbyName('B').value; end; 我心想更改A,B的值,C會自動改變,但結果非也!我想請教各位先知,是我對OnCalcField的事件理解不對,還是另有錯誤之處! 謝謝! 1. 思考,放鬆,再思考! 2. 練習,學習,再練習! 3, 請教,改錯,再請教! 4. 創新,改進,再創新! |
Code168
一般會員 ![]() ![]() 發表:16 回覆:11 積分:5 註冊:2003-02-11 發送簡訊給我 |
|
tech_state
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:44 回覆:638 積分:641 註冊:2003-02-10 發送簡訊給我 |
Code168, 您好
請參考以下的連結資料,您這個問題前幾天剛好BCB版的資料庫有討論過了。
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30977 =======================
涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。
是非終日有,不聽自然無
天下本無事,庸人自擾之
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: Channel兄; 根據你所說的,即是field C並不是數據表中的一個欄,即是dataset里的一個欄對嗎?我並不是很明白,你能否給我一個簡單的例子嗎? 1. 思考,放鬆,再思考! 2. 練習,學習,再練習! 3, 請教,改錯,再請教! 4. 創新,改進,再創新!沒有錯,Field C不是數據表中的一個欄,是DataSet的一個欄,是虛擬一個欄位讓Delphi自動幫您動態計算出結果。 方法如下:
------
~小弟淺見,參考看看~ |
Code168
一般會員 ![]() ![]() 發表:16 回覆:11 積分:5 註冊:2003-02-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |