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

可以限制DBGrid在輸入數值資料時的長度嗎?

尚未結案
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-24 13:58:15 IP:218.164.xxx.xxx 未訂閱
請教各位大大: 當DBGrid.Columns所連接的欄位為數值型態,整數部分為9位數, 可以限制使用者輸入時,不可超過9位數嗎? 或是能攔截到'Number is out of range'的錯誤訊息嗎? 謝謝!! 新手上路!!加油中...
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-24 14:32:20 IP:211.76.xxx.xxx 未訂閱
可以在 DataSet 中的 TField 裡的 onValidate EVENT 中檢查...    如:
procedure TForm1.Query1TESTValidate(Sender: TField);
begin
  if length(Sender.AsString) > 9 then
  begin
    raise ERangeError.CreateFmt(
      '%s is more than 9 digits',
      [Sender.AsString]);
  end;
end;
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-24 15:03:13 IP:218.164.xxx.xxx 未訂閱
謝謝timhuang大大的回應!!    但是, 可否請教timhuang大大, 藉由length(Sender.AsString)應該是可取得字串型態的長度, 它也可取得數值型態的長度嗎? 另外, 若是 > 請不吝指導!! 新手上路!!加油中...
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-24 17:50:23 IP:211.76.xxx.xxx 未訂閱
1. 可以的. 因為已經利用 .AsString 轉回為 string 2. 在 datamodule 也是一樣的, 操作方式如下: 在該 tquery 元件上按兩下 -> 在出現的小視窗上按右鍵選 add all fields -> 然後選取你要檢查的 field 在 object inspector 中的 event 中寫 onValidate EVENT 即可!!
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-24 19:52:02 IP:218.164.xxx.xxx 未訂閱
再請教一下, TQuery在設計時期無法取得欄位的話, 怎麼辦? 是否有除了OnValidate事件之外方法呢? 新手上路!!加油中...
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-25 00:59:43 IP:61.221.xxx.xxx 未訂閱
也可以使用 DATASET 的 onBeforePost event , 寫段範例給你參考: 若不想進行資料的更新, 最後加個 abort 即可    
procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  if length(dataset.FieldByName('mycol').AsString) > 9 then
  begin
    showmessage(dataset.FieldByName('mycol').AsString ' is more than 9 digits');
    abort;
  end;
end;
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-25 10:05:07 IP:218.164.xxx.xxx 未訂閱
謝謝timhuang大大的指導!! 受益良多!! 新手上路!!加油中...
系統時間:2024-04-29 20:59:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!