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

請教一個資料表記錄更新的問題

答題得分者是:cashxin2002
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-03 11:31:25 IP:222.248.xxx.xxx 未訂閱
有資料表Send欄位如下: Sn   address  tel    Sn是唯一關鍵字,要實現功能:如果表中能存在sn為某值的記錄,則更新該條記錄,沒有則插入一條新記錄。    我是這樣寫的:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select count(*) from Send where sn='''   Edit1.Text   '''');
ADOQuery1.Open;
ADOQuery1.SQL.Clear;
If ADOQuery1.fields[0].AsInteger <> 0 then
  ADOQuery1.SQL.Add('Update Send Set address='''   Edit2.Text   ''', tel='''   Edit3.Text   ''' Where sn='''   Edit1.Text   '''')
Else
  ADOQuery1.SQL.Add('Insert into Send values('sn='''   Edit1.Text   ''', address='''   Edit2.Text   ''', tel='''   Edit3.Text   ''')');
ADOQuery1.ExecSQL;
有沒有更簡便的方法或更快捷的SQL語句?
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-03 12:07:56 IP:202.62.xxx.xxx 未訂閱
您好﹗    因為Insert和Update是皆屬不同性質的SQL語法﹐您的寫法在效率上應是最快的﹐查詢的部分也可使用如下的方法﹐而不用Count函數﹕ ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from Send where sn=''' + Edit1.Text + ''''); ADOQuery1.Open; ADOQuery1.SQL.Clear; if ADOQuery1.RecordCount <> 0 then ...... else ......    另外一種方法就是在查詢的部分不用SQL語法﹐可使用ADOQuery元件的Locate方法來做﹐方法如下﹐但如果是針對大量的資料內容來講﹐SQL查詢語法是最有效率的﹒ if Not ADOQuery1.Locate('sn', Edit1.Text, [loCaseInsensitive]) then ...... else ......    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/06/03 12:12:23
------
忻晟
系統時間:2024-11-05 5:32:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!