全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:974
推到 Plurk!
推到 Facebook!

BeforeEdit的問題

尚未結案
narcysion
一般會員


發表:54
回覆:18
積分:14
註冊:2003-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-02 17:12:53 IP:61.222.xxx.xxx 未訂閱
我在BeforeEdit裡,加入下面的程式碼 if SubDataQuerym501101.AsString <> '' then begin CheckQuery.SQL.Add(' select count(*) as ABC from sm3031 '); CheckQuery.SQL.Add(format(' where m303103 = ''%s'' ',[SubDataQuerym501101.AsString])); CheckQuery.SQL.Add(format(' and m303114 = %f ',[SubDataQuerym501102.Asfloat])); CheckQuery.Open; if CheckQuery.FieldByName('ABC').Value>0 then begin Showmessage('已有領料資料!不能修改項次!或請洽 MIS !'); Abort; end; CheckQuery.Close; end; 我這樣寫,我所有的欄位皆可不修改, 但我現在只要讓其中的某一個欄位不可改,其餘皆可修改,要如何加程式碼?
narcysion
一般會員


發表:54
回覆:18
積分:14
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-02 17:55:00 IP:61.222.xxx.xxx 未訂閱
啊,不好意思,寫錯了 ============================ 我這樣寫,我所有的欄位皆不可以修改, 但我現在要讓其中的某一個欄位不可改,其餘皆可修改,要如何加程式碼?
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-02 18:32:14 IP:210.68.xxx.xxx 未訂閱
if dbgrid1.SelectedField.FieldName <>'Field' then begin if SubDataQuerym501101.AsString <> '' then begin CheckQuery.SQL.Add(' select count(*) as ABC from sm3031 '); CheckQuery.SQL.Add(format(' where m303103 = ''%s'' ',[SubDataQuerym501101.AsString])); CheckQuery.SQL.Add(format(' and m303114 = %f ',[SubDataQuerym501102.Asfloat])); CheckQuery.Open; if CheckQuery.FieldByName('ABC').Value>0 then begin Showmessage('已有領料資料!不能修改項次!或請洽 MIS !'); Abort; end; CheckQuery.Close; end; end; end; ~悠遊法國號~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-02 23:09:48 IP:218.32.xxx.xxx 未訂閱
narcysion 你好:    DataSet 的 BeforeEdit Event 好像不太恰當.    試試看用 TDataSource 的 OnDataChange Event.    
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  if (Field<>nil)and(Field.FieldName = '項次') then begin
    showmessage('項次 Changed.');
    ...
  end;
end;
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-05 09:07:27 IP:210.68.xxx.xxx 未訂閱
Hi  小弟淺見 FieldName='Field1'>~悠遊法國號~ 發表人 - yachanga 於 2004/04/05 09:11:16 發表人 - yachanga 於 2004/04/05 09:20:34
narcysion
一般會員


發表:54
回覆:18
積分:14
註冊:2003-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-05 11:24:34 IP:61.222.xxx.xxx 未訂閱
很感謝大家的回答,但我要的做法是: 1.先搜尋有無領料的資料。 2.無的話任何資料皆可修改,包含項次這個欄位也可改。 3.若有領料資料,則user若要去修改項次這個欄位的話,則show出錯誤的訊息,並且跳出。 4.我目前比較不懂的是,若搜尋到有領料資料,我該如何判斷,user有無去動到項次這個欄位,且要如何禁止user去動到該欄位,該如何做判斷。 5.我用的元件是TDBCtrlGrid,並不是用DBGrid。
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-05 13:08:03 IP:210.68.xxx.xxx 未訂閱
Hi narcysion您好: 您說用的元件是TDBCtrlGrid,並不是用DBGrid。 所以是不是有另外拉一個TDBEdit 物件放在 TDBCtrlGrid..DataField Property 設為 項次欄位??    如果是 小弟建議可以使用 KeyPress Event.. 方法很多 以下為可行之一  >>~悠遊法國號~ 發表人 - yachanga 於 2004/04/05 13:09:26
系統時間:2024-09-09 18:01:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!