如何判断DBEdit等有源控件是否更改过? |
答題得分者是:Fishman
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
大大们好,又有问题麻烦各位了,请您多多指点
当我们更改了某笔记录时,此时改变后的数据并没有被写入数据库,必须调用<>>方法来将数据写入数据库。
< class="code">
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Post;
end;
但是,如果我没有改变数据字段,又偏偏按下Button去保存数据的话,此时程式就会出错,如下图:
因此在调用Post方法之前必须先检验一下记录目前的状态(State),所以程式改为:
procedure TForm1.Button1Click(Sender: TObject); begin if ADOTable1.State = dsEdit then begin ADOTable1.Post; ShowMessage('数据已经被写入'); end; end;到这里,好象已经结束了。我的问题就出在这里,这样做会出现按下保存的Button后,数据不能及时的写入数据库(ShowMessage里的内容没有出现),需要浏览一下前一笔数据才能被写入,很麻烦!而原来不加ADOTable1.State时就不会这样啊!请大大们指点我该如何解决这个问题,是不是还有其他的好方法呢?(新手提的问题很幼稚,请大大您见怪不怪) < class="code"> =============== 人生在勤,不索何获? ===============
------
人生在勤,不索何获? |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi bigdogchina, 試試以下寫法
procedure TForm1.Button1Click(Sender: TObject); begin TRY ADOTable1.Post; EXCEPT ShowMessage('Post Error !!'); END; end; 或是 procedure TForm1.Button1Click(Sender: TObject); begin TRY IF ADOTable1.State in [dsEdit,dsInsert] then BEGIN ADOTable1.Post; ShowMessage('Update or Insert successfully !!') END; EXCEPT ShowMessage('Post Error'); END; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |