線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1036
推到 Plurk!
推到 Facebook!

請問在異動DBGrid中某一筆記錄的某個欄位時所作處理。

尚未結案
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-06 14:24:35 IP:61.221.xxx.xxx 未訂閱
請問各位。 在DBGRID中有單別/單號/開單日期/實際交貨數, 假設DBGRID秀出數筆記錄,當使用者異動某筆記錄, 的實際交貨數時,可以需要去異動另一個表格的欄位 [更動碼]為[Y],我嘗試利用DBGRID中EVENTS, 請問我該那個EVENTS同時可以儲存實際交貨數的數量, 和更改[更動碼]值。 麻煩大家。謝謝。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-06 15:51:33 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試這樣﹕ 先宣告一個全域數值變數和全域布林變數﹐用來記錄修改前的實際交貨數﹐然后在資料集元件(如ADOTable)的AfterEdit事件中﹐用變數記錄下當前資料修改前的實際交貨數﹐然后在資料集元件(如ADOTable)的BeforePost事件中將當前筆資料的實際交貨數和之前記錄下的變數值相比較﹐如果不相同的話﹐賦True值給全域布林變數﹐如果相同的話﹐賦False值給全域布林變數﹐最后在資料集元件(如ADOTable)的AfterPost事件中根据全域布林變數的值決定是否更新另一個表格中更動碼的值﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-06 19:58:47 IP:61.59.xxx.xxx 未訂閱
您好, 謝謝您,我了解您的意思,可是我如何去取得目前在 DBGrid內指標所指目前的實際交貨數的值呢.在[ADOTable] 的兩個事件作處理取修改前後的值內容,請問如何去記錄 變數的值的命令,該如何去寫呢. 麻煩您,謝謝.
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-07 10:43:25 IP:61.221.xxx.xxx 未訂閱
您好﹗ 定義:兩個整數變數和一個布林變數的全域變數。 ATD202O:Integer; ATD202N:Integer; ATD001B:Boolean; 事件中: procedure TFMoc03.ADOQuery1BeforeEdit(DataSet: TDataSet); begin ATD202O := ADOQuery1.FieldByName('TD202').AsInteger; end; procedure TFMoc03.ADOQuery1AfterEdit(DataSet: TDataSet); begin ATD202N := ADOQuery1.FieldByName('TD202').AsInteger; showmessage(INTTOSTR(ATD202O) '--' INTTOSTR(ATD202N)); end; 可是ATD202O和ATD202N所取的值,是相同的。 如何讓使用者可以讀取到目前使用者所鍵入的值呢。 thks
bruce
中階會員


發表:19
回覆:121
積分:83
註冊:2002-04-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-08 14:20:41 IP:61.219.xxx.xxx 未訂閱
Represents the original value of the field (as a Variant). property OldValue: Variant; Description Read the OldValue property to examine or retrieve the original value of the field that was obtained from the dataset before any new values were written to the record buffer. For example, this code replaces current pending changes with a field? original value: NewValue := OldValue; Once records are posted successfully, the old field value cannot be retrieved. Note: the OldValue property is only usable when the data is accessed using a TClientDataSet component or cached updates is enabled. 經測試AdoDataSet亦適用。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-08 14:41:10 IP:202.62.xxx.xxx 未訂閱
您好﹗    上篇回覆中寫到的是在資料集元件的AfterEdit事件中記錄﹐然后再在資料集元件的BeforePost事件中記錄﹐而不是在BeforeEdit事件和AfterEdit事件中做記錄﹐在BeforeEdit事件和AfterEdit事件中取出的值當然是一樣的嘍﹒
//全域變數宣告
private
  ATD202O:Integer;
  ATD202N:Integer;
  ATD001B:Boolean;
  {Private declarations}    procedure TFMoc03.ADOQuery1AfterEdit(DataSet: TDataSet);
begin
  ATD202O := ADOQuery1.FieldByName('TD202').AsInteger;
end;    procedure TFMoc03.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  ATD001B := False;
  ATD202N := ADOQuery1.FieldByName('TD202').AsInteger;
  if ATD2020 <> ATD202N then
    ATD001B := True;
end;    procedure TFMoc03.ADOQuery1AfterPost(DataSet: TDataSet);
begin
  if ATD001B = True then
    begin
      //略﹒﹒﹒更新另一資料表中的更動碼欄位值為'Y'
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

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