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

日期格式輸入錯誤,為何用Validate不會先檢查到?

尚未結案
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-12 15:46:07 IP:218.162.xxx.xxx 未訂閱
我用ACCSET資料庫,DELPHI7.0  為何設定了 Validate 系統還是會出現 的錯誤,難道欄位不能設成 DATETIME,要用字串? ADOQtable1d_fill: TDateTimeField; procedure TfrmOvertime_Manager.ADOQtable1d_fillValidate( Sender: TField); begin IF NOT ChkStr_isDate(Sender.AsString) THEN raise exception.create('日期輸入錯誤'); //沒有用 end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-12 17:01:31 IP:202.39.xxx.xxx 未訂閱
在 IDE 內還是會出現如圖的錯誤訊息是正常的 直接執行 exe 檔就不會了, 否則在 delphi 選單  -> Tools -> Debugger Options 的 Language Exceptions 頁中 有個 Stop on Delphi Exceptions 的 checkbox 不打勾就好了. 另見: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22247    --- 每個人都是一本書. --<-<-<@
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-12 17:40:25 IP:218.162.xxx.xxx 未訂閱
引言: 在 IDE 內還是會出現如圖的錯誤訊息是正常的 直接執行 exe 檔就不會了, 否則在 delphi 選單 -> Tools -> Debugger Options 的 Language Exceptions 頁中 有個 Stop on Delphi Exceptions 的 checkbox 不打勾就好了. 另見: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22247 --- 每個人都是一本書. --<-<-<@
我知道,可是我的情形是 我把 asccset 欄位 改成文字,Validate就有用, 欄位 改成 日期/時間 時,Validate就無效ㄝ,奇怪勒?不知為何 發表人 - shinhrn 於 2004/02/12 17:47:04 發表人 - shinhrn 於 2004/02/12 17:53:56
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-12 18:45:58 IP:202.39.xxx.xxx 未訂閱
看情形是還沒觸發 OnValidate 就引發的錯誤訊息 您是用什麼元件輸入日期的? 有沒有其它檢查日期的地方?    --- 每個人都是一本書. --<-<-<@
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-13 08:54:00 IP:218.162.xxx.xxx 未訂閱
引言: 看情形是還沒觸發 OnValidate 就引發的錯誤訊息 您是用什麼元件輸入日期的? 有沒有其它檢查日期的地方? --- 每個人都是一本書. --<-<-<@
我想也是,可是我又找不到,因為我不用改程式,只要將 asccset 欄位改成 文字就可以了ㄝ,我想是不是TDateTimeField 的問題? 因為我是過 procedure TfrmOvertime_Manager.ADOQtable1d_fillValidate( Sender: TField); begin showmessage('日期輸入錯誤'); end; 如果資料正確Validate有用,資料錯誤就直接error了Validate就不runㄝ 發表人 -
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-13 09:14:59 IP:61.220.xxx.xxx 未訂閱
你必須在輸入日期前先作 ShortDateFormat的動作才可以 ps:(ShortDateFormat的格式必須跟你要輸入日期的格式一樣) 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
babyfish4
一般會員


發表:2
回覆:40
積分:18
註冊:2003-08-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-13 10:46:07 IP:61.63.xxx.xxx 未訂閱
您好:    可以試試將OnValiDate的Event寫在 OnSetText的Event裡頭
begin
    IF NOT ChkStr_isDate(Sender.AsString) THEN
      begin
        raise exception.create('日期輸入錯誤'); 
        Abort;
      end;
end;
引言: 我用ACCSET資料庫,DELPHI7.0 為何設定了 Validate 系統還是會出現 的錯誤,難道欄位不能設成 DATETIME,要用字串? ADOQtable1d_fill: TDateTimeField; procedure TfrmOvertime_Manager.ADOQtable1d_fillValidate( Sender: TField); begin IF NOT ChkStr_isDate(Sender.AsString) THEN raise exception.create('日期輸入錯誤'); //沒有用 end;
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-13 10:56:31 IP:218.162.xxx.xxx 未訂閱
引言: 你必須在輸入日期前先作 ShortDateFormat的動作才可以 ps:(ShortDateFormat的格式必須跟你要輸入日期的格式一樣) 天行健 君子當自強不息~~@.@
ShortDateFormat:='yyyy/dd/mm'; 我還有試過 editmask.... '!9999/99/99;1' -->在 TDateTimeField ; 一樣無效
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-13 11:10:23 IP:218.162.xxx.xxx 未訂閱
引言: 您好: 可以試試將OnValiDate的Event寫在 OnSetText的Event裡頭
可以ㄝ...3Q.........不知為何ValiDate沒有先檢查喔???ok.....3Q
babyfish4
一般會員


發表:2
回覆:40
積分:18
註冊:2003-08-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-13 11:14:04 IP:61.63.xxx.xxx 未訂閱
引言:
引言: 您好: 可以試試將OnValiDate的Event寫在 OnSetText的Event裡頭
可以ㄝ...3Q.........不知為何ValiDate沒有先檢查喔???ok.....3Q
因為OnSetText會比OnValiDate先發生 所以會先攔截到
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-13 12:46:33 IP:218.162.xxx.xxx 未訂閱
引言:
引言:
引言: 您好: 可以試試將OnValiDate的Event寫在 OnSetText的Event裡頭
可以ㄝ...3Q.........不知為何ValiDate沒有先檢查喔???ok.....3Q
因為OnSetText會比OnValiDate先發生 所以會先攔截到
依現有狀況來看是如此,可是我認為要先ValiDate再Set這樣的順序才對阿,要不然ValiDate有何意義?? 另又試到一狀況提供大家參考,一般檢查datetime是用strtoDaTime()去try 可是ㄋ strtoDaTime('2004/02/02 aaa1:11:11')-->error strtoDaTime('2004/02/02 2aaa11:11:11')-->卻ok 可是入存到資料庫時就會error了..... 發表人 - shinhrn 於 2004/02/13 13:42:23
系統時間:2024-11-23 11:21:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!