資料庫元件自動儲存的問題 |
尚未結案
|
sword185
一般會員 發表:36 回覆:81 積分:23 註冊:2002-06-05 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
例:
procedure TForm1.Table1BeforeScroll(Dataset: TDataset); begin if Table1.State in [dsEdit, dsInsert] then begin if MessageDlg('Table1 的資料尚存檔, 存檔乎?', mtConfirmation, [mbYes, mbCancel], 0) = mrCancel then Abort; end; end;--- Everything I say is a lie. |
sword185
一般會員 發表:36 回覆:81 積分:23 註冊:2002-06-05 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 試試如下的方法:
Table元件的beforeScroll事件中:
begin if Table1.State in [dsEdit, dsInsert] then Table1.Cancel; end;另外也可將如上程式碼寫在DataSource元件的OnDataChange事件中試試看! 參考看看! 經hagar版主大大提醒﹐小弟在DataSource元件的OnDataChange事件中測試了一下﹐結果也不行﹐任何Data的欄位移動都會触發Cancel的事件﹐看來要再找其它的解決途徑了﹐抱歉﹗抱歉﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/11/25 10:13:21
------
忻晟 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
sword185
一般會員 發表:36 回覆:81 積分:23 註冊:2002-06-05 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 我目前的控制方法有兩種:
1.當進入新增或編輯模式,即不允許使用者移動上下筆資料,除非 User 按下 Save 或 Cancel 按鈕,才恢復瀏覽模式
2.將 Dataset 的 CachedUpdates 屬性設為 True,如此即可批次對資料庫進行更新(詳見 Delphi Help --> StartTransaction, ApplyUpdates, Commit, Rollback, CommitUpdates example)
--------------------------------
小弟才疏學淺,若有謬誤請不吝指教
--------------------------------
------
Fishman |
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
交流一下小弟的經驗談 一般說來dbgrid可拿來顯示dataset的全部資料包含各個欄位與列,真是再好也不過了,又可以拿來新增刪除修改,這真的是太好了, 只是有次,小弟看了看公司新來的同事設計的架構,嚇....grid都只拿來顯示而已,要編輯就開另外一個form上面擺了各個欄位對應的edit來編輯與新增,如果是編輯模式的話就把資料在formcreate的時候填入這些edit裡面,如果以出貨單為例子,那麼原來一個form可以搞定的事情,用這樣來寫要要兩個form,以一套進銷存系統來說,幾乎只要是master-detail類型的form都要從1變成2,還記得那時候我問為什麼這樣設計: "學校老師這樣教的...." 然後....臉上三條黑線... 現在看到這篇post,我突然發現那時同事所設計的架構原來可以解決這個問題,這讓我感觸很深,再怎麼笨拙的方法,都有它的優點所在......
|
sword185
一般會員 發表:36 回覆:81 積分:23 註冊:2002-06-05 發送簡訊給我 |
呵呵.... 上面提到的方式的我之前有做過...... 只不過比較麻煩!! 不過我昨天想到一個方法
先將Table1.ReadOnly=True; 再用一顆按鈕來控制 procedure TForm1.Button1Click(Sender: TObject);
begin
If(Application.MessageBox('您確定要修改這筆資料嗎?','※修改',MB_ICONInformation MB_YesNo)=ID_Yes)then
begin
Table1.Close;
Table1.ReadOnly:=False;
Table1.Open;
end;
end; 不過往下的欄位均可修改 再次謝謝各位先進.......
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 剛剛找到一篇文章,供各位參考
http://delphi.ktop.com.tw/topic.php?topic_id=26531
--------------------------------
小弟才疏學淺,若有謬誤請不吝指教
--------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |