線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1070
推到 Plurk!
推到 Facebook!

新增+更新語言一問(SQL語法)

答題得分者是:yachanga
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-01 08:33:58 IP:61.59.xxx.xxx 未訂閱
我有一筆資料要新增進MSSQL資料庫裡,要先判斷主鍵是否存在。 存在的話就用更新的方式進行資料更新。 若不存在時就用新增的方法。 謝謝大大們
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-01 09:56:00 IP:211.74.xxx.xxx 未訂閱
不知道您的UI如何設計.... 假設您是用 TEdit 當做input ....    procedure TForm1.Button1Click(Sender: TObject); begin  Query1.Close;  Query1.SQL.Text:='select * from table where pk='''+edit1.text+'''';  Query1.Open;  if Query1.RecordCount>=0 then   Query2.SQL.Text:='update table set a='''+edit2.Text+''' where pk='''+edit1.Text+'''';  else   Query2.SQL.Text:='insert into table(pk,a) values('''+edit1.Text+''','''+edit2.Text+''')';     Query2.ExecSQL; end;    ~悠遊法國號~
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-01 10:01:21 IP:61.59.xxx.xxx 未訂閱
引言: 不知道您的UI如何設計.... 假設您是用 TEdit 當做input .... procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.SQL.Text:='select * from table where pk=''' edit1.text ''''; Query1.Open; if Query1.RecordCount>=0 then Query2.SQL.Text:='update table set a=''' edit2.Text ''' where pk=''' edit1.Text ''''; else Query2.SQL.Text:='insert into table(pk,a) values(''' edit1.Text ''',''' edit2.Text ''')'; Query2.ExecSQL; end; ~悠遊法國號~
對吼....這樣就可以 怪事,我怎麼把這個想的很難的樣子 我還在想說 select跟insert、update要怎麼串聯起來說 哈哈哈 真素一語驚醒夢中人啊
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-01 14:20:18 IP:211.21.xxx.xxx 未訂閱
不知有無漂亮直接的語法...(全部在 SQL 中解決)
rexchiu
中階會員


發表:14
回覆:88
積分:70
註冊:2002-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-02 18:05:21 IP:211.78.xxx.xxx 未訂閱
引言: 不知有無漂亮直接的語法...(全部在 SQL 中解決)
有,以MS SQL Server為例,你可以寫寫一些T-SQL declare @count as int,@pkdata as varchar(20),@padata as varchar(20) select @pkdata=:ppk select @padata=:pa select count(*) from table where pk=@pkdata if @count>0 begin update table set a=@padata where pk=@pkdata end else begin insert into table(pk,a) values(@pkdata,@padata) end 將上述的T-SQL statement 放入 query元件的sql中,即可. 例如將上述的statement 存成一個文字檔. 然後 query1.sql.loadfromfile('ccc.txt'); query1.parameters.parambyname('ppk').value=edit1.text; query1.parameters.parambyname('pa').value=edit2.text; query1.execsql. 這樣就可以啦... 嫌 loadfromfile麻煩也可以將上述的statement放在一個隱形的memo中 到時候在 query1.sql:=memo.lines; 就可以.或者自己建立一個TStrings去放也可以. 這是使用ADO元件的時候,使用一般的query元件. 除parameters的部分不一樣,其餘都一樣. Best Regards, Rex Chiu 發表人 - rexchiu 於 2004/04/02 18:07:10
------
Best Regards,
Rex Chiu
系統時間:2024-07-01 4:13:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!