請問在異動DBGrid中某一筆記錄的某個欄位時所作處理。 |
尚未結案
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 試試這樣﹕
先宣告一個全域數值變數和全域布林變數﹐用來記錄修改前的實際交貨數﹐然后在資料集元件(如ADOTable)的AfterEdit事件中﹐用變數記錄下當前資料修改前的實際交貨數﹐然后在資料集元件(如ADOTable)的BeforePost事件中將當前筆資料的實際交貨數和之前記錄下的變數值相比較﹐如果不相同的話﹐賦True值給全域布林變數﹐如果相同的話﹐賦False值給全域布林變數﹐最后在資料集元件(如ADOTable)的AfterPost事件中根据全域布林變數的值決定是否更新另一個表格中更動碼的值﹒ =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
您好﹗
定義:兩個整數變數和一個布林變數的全域變數。
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 發送簡訊給我 |
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 發送簡訊給我 |
您好﹗ 上篇回覆中寫到的是在資料集元件的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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |