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

為什咪那ㄟ不一樣結果

答題得分者是:Justmade
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-28 02:24:54 IP:61.228.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-28 07:32:42 IP:202.39.xxx.xxx 未訂閱
CompADOQuery2.SQL.Add('select * from hcompany where companyno=fcedit1.Text'); 改成: CompADOQuery2.SQL.Add('select * from hcompany where companyno = ''' fcedit1.Text ''''); --- Have you ever wondered what it would be like?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-28 07:57:50 IP:211.74.xxx.xxx 未訂閱
改為這樣...
  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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-28 08:52:42 IP:218.16.xxx.xxx 未訂閱
引言: Sz:=FCedit1.Text; if (Length(TrimRight(TrimLeft(FCEdit1.Text))) = 0) or (Length(TrimRight(TrimLeft(FCEdit1.Text))) < 8) then Showmessage('代號為 空白或小於8碼') else
1. 由於所有空白的代號必定小於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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-28 12:59:10 IP:61.228.xxx.xxx 未訂閱
引言: 請問使用 adoquery1.Locate('companyno',FCedit1.Text,[]); 與 CompADOQuery1.SQL.Text := 'select * from hcompany where companyno=''' Sz ''''; 比較之下何種速度較快?謝謝Hagar,Chih,Justmade
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-28 13:01:38 IP:218.16.xxx.xxx 未訂閱
Locate, 因為不用重新載入資料。
lilisn
一般會員


發表:35
回覆:62
積分:24
註冊:2003-03-09

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