請教一個資料表記錄更新的問題 |
答題得分者是:cashxin2002
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
有資料表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 發送簡訊給我 |
您好﹗ 因為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
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |