為什咪那ㄟ不一樣結果 |
答題得分者是:Justmade
|
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
Sz:=FCedit1.Text;
if (Length(TrimRight(TrimLeft(FCEdit1.Text))) = 0) or (Length(TrimRight(TrimLeft(FCEdit1.Text))) < 8) then
Showmessage('代號為 空白或小於8碼') else
if (Length(TrimRight(TrimLeft(FCEdit1.Text))) = 8 ) and (Cinsert='T') then begin
第一使用:輸入[12345678]結果答案告訴我代號以存在(companyno為key值)
data 跟本沒有代號[12345678] ?
CompADOQuery2.Locate('companyno',FCedit1.Text,[loPartialkey]);
if CompADOQuery2.Eof then
showmessage('111'); 第二使用:輸入[12345678]結果答案告訴我代號不存在
CompADOQuery2.SQL.Clear;
CompADOQuery2.SQL.Add('select * from hcompany where
companyno=fcedit1.Text');
if CompADOQuery2.Eof then
showmessage('111');
霧薩薩?
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
改為這樣...
if CompADOQuery2.Locate('companyno',FCedit1.Text,[loPartialkey]) then showmessage('111') else showmessage('無資料');TRY TRY SEE 引言: 第一使用:輸入[12345678]結果答案告訴我代號以存在(companyno為key值) data 跟本沒有代號[12345678] ? CompADOQuery2.Locate('companyno',FCedit1.Text,[loPartialkey]); if CompADOQuery2.Eof then showmessage('111'); |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: Sz:=FCedit1.Text; if (Length(TrimRight(TrimLeft(FCEdit1.Text))) = 0) or (Length(TrimRight(TrimLeft(FCEdit1.Text))) < 8) then Showmessage('代號為 空白或小於8碼') else1. 由於所有空白的代號必定小於8碼,所以不需要空白條件只留 < 8 條件即可。 2. 既然定議了 Sz , 為何不用呢? <>< face="Verdana, Arial, Helvetica">引言: if (Length(TrimRight(TrimLeft(FCEdit1.Text))) = 8 ) and (Cinsert='T') then begin 第一使用:輸入[12345678]結果答案告訴我代號以存在(companyno為key值) data 跟本沒有代號[12345678] ? CompADOQuery2.Locate('companyno',FCedit1.Text,[loPartialkey]); if CompADOQuery2.Eof then showmessage('111'); 1. 你用 Locate(...[loPartialKey]) 最後會去到最接近你輸入的下一筆記錄,例如若檔案沒 12345678 但有 12345679,就會去到 12345679 而不是 Eof。 2. 建議使用 Chih 兄提議的方法直接讀取 Locate 的回傳值 (成功與否) 來判別。不過,建議別用 loPartialKey,因為若你的資料沒有 12345678 但有 123456789 時,若用了 loPartialKey ,會判別為成功。 引言: 第二使用:輸入[12345678]結果答案告訴我代號不存在 CompADOQuery2.SQL.Clear; CompADOQuery2.SQL.Add('select * from hcompany where companyno=fcedit1.Text'); if CompADOQuery2.Eof then showmessage('111'); 霧薩薩?1. SQL 裡的文字是直接傳給數據庫的,你的數據庫又甚會知道甚麼是 fcedit1.Text 呢? 另外,你有 open CompADOQuery2 罷。 總合建議程式碼如下 : Sz:=FCedit1.Text; if Length(Trim(Sz) < 8 then Showmessage('代號為 空白或小於8碼') else if (Length(Trim(Sz)) = 8 ) and (Cinsert='T') then begin if not CompADOQuery2.Locate('companyno',Sz,[]) then showmessage('111'); end; 第二使用: CompADOQuery2.SQL.Text := 'select * from hcompany where companyno=''' Sz ''''; CompADOQuery2.Active := true; if CompADOQuery2.isEmpty then showmessage('111');修正:加上紅色部份因為應是找不到時 ShowMessage 發表人 - Justmade 於 2003/03/28 09:00:34 |
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
lilisn
一般會員 發表:35 回覆:62 積分:24 註冊:2003-03-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |