SQL新增的語法~ |
答題得分者是:Chance36
|
depblue
一般會員 ![]() ![]() 發表:38 回覆:29 積分:13 註冊:2004-12-27 發送簡訊給我 |
我問題是:
如何從原本Select的資料中在加入其他資料? acelutf資料表 (MS SQL)
ORDNO REL_01
1 QQ
2 PP
3 LL
4 KK
5 II
6 HH
7 YY
8 RR
9 TT
10 DD
11 WW
12 EE
13 SS
14 RR
15 FF
...........
with elutfQu do
begin
Close;
SQL.Clear;
SQL.Add('Select * from acelutf where ordno >= :p_ordno1 and ordno <= :p_ordno2');
Parameters.ParamByName('p_ordno1').Value := '1';
Parameters.ParamByName('p_ordno2').Value := '10';
Open;
end;
以上是把1-10的SELECT出來 如果我要把1-10的資料保留 並再加上 ORDNO = 13 的資料
(資料都顯示在同一個TDBGrid
並且1-10的資料已經修改過
我採用全部修改完,在一起更新到資料庫
)
我之前用UNION把兩個SELECT並在一起
(Select * from acelutf where ordno >= '1' and ordno <= '10'
UNION select * from acelutf where ordno = '13')
可是這並不是我要的結果並且之前修改的資料都會變成原本的資料
請問要如何下手? ?
|
pillar62
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
depblue
一般會員 ![]() ![]() 發表:38 回覆:29 積分:13 註冊:2004-12-27 發送簡訊給我 |
引言: 你好 如果只是要顯示!可以試試看用另外一個暫存用的query,將原來的資料和新的資料一起寫到暫存用的query裡面,然後再用來顯示,這樣應該就可以!!query搭配updatesql和屬性cachedupdate設定成true,以及條件裡面加入where 1=0就可以做一個暫存用的query,資料庫裡面不用新增暫存用的表格喔!!試試看吧!! Pillar Wang恩...我是要把顯示的資料可以修改 並且除了最初select的資料之外還要從資料庫中select另外符合條件的資料 所以TDBGrids中顯示的資料是 最初select的資料 最新select的資料 |
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
depblue
一般會員 ![]() ![]() 發表:38 回覆:29 積分:13 註冊:2004-12-27 發送簡訊給我 |
引言: 您好﹗ 試試改成如下﹕ Select * from acelutf where ordno >= '1' and ordno <= '10' or ordno = '13' =================================如果改成上面的語法 我之前(ordno = 1~10)修改的資料就會不見 因為ordno = 1~10是最初select的資料 我設一個新增按鈕 讓ordno = 13這筆資料顯示在同一個TDBGrids裡 (現在TDBGrid有ordno= 1~10(已經修改過) 和 ordno = 13的資料) |
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
depblue
一般會員 ![]() ![]() 發表:38 回覆:29 積分:13 註冊:2004-12-27 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 呵呵﹐實在是不太清楚您此需要的目的為何﹖
小弟有如下的想法﹐供您參考﹐說明﹕
Step1.先將資料表acelutf中1~10的資料錄擷取到一個新的資料表中 begin elutfQu.Close; elutfQu.SQL.Clear; elutfQu.SQL.Add('Select * Into TableTemp1 From acelutf Where '); elutfQu.SQL.Add('ordno Between '1' and '10'); elutfQu.ExecSQL; elutfQu.SQL.Text := 'Select * From TableTemp1'; elutfQu.Open; end; //至此步驟﹐已將資料表中1~10的資料錄新增到一個新的資料表TableTemp1中 //而后即可對此TableTemp1中的資料錄進行異動 Step2.對TableTemp1中的資料錄異動完成后﹐再將原資料表中的RecNo.13的資料錄﹐新增到TableTemp1中 begin elutfQu.Close; elutfQu.SQL.Clear; elutfQu.SQL.Add('Insert Into TableTemp1 From acelutf Where '); elutfQu.SQL.Add('ordno = ''13''); elutfQu.ExecSQL; elutfQu.SQL.Text := 'Select * From TableTemp1'; end; //到此步驟﹐即已在TableTemp1資料表中新增了RecNo=13的資料錄 Step3.將資料表TableTemp1中的所有資料錄更新到acelutf資料表中 begin elutfQu.Close; elutfQu.SQL.Clear; elutfQu.SQL.Add('Update acelutf, TableTemp1 Set '); elutfQu.SQL.Add('acelutf.REL_01 = TableTemp1.REL_01 '); elutfQu.SQL.Add('Where acelutf.ORDNO = TableTemp1.ORDNO'); elutfQu.ExecSQL; end; Step4.將資料表TableTemp1刪除 begin elutfQu.Close; elutfQu.SQL.Clear; elutfQu.SQL.Add('Drop Table TableTemp1'); elutfQu.ExecSQL; end;=================================
------
忻晟 |
depblue
一般會員 ![]() ![]() 發表:38 回覆:29 積分:13 註冊:2004-12-27 發送簡訊給我 |
對不起,我問題敘述的不清楚,請見諒! 我想表達的是
我設計兩各畫面
第一各畫面:是select出符合條件的資料(A) 第二各畫面:是顯示出上面所符合條件到TDBGrids中 並進行修改
並設計一各新增按鈕,新增一筆資料(B)到TDBGrids裡
所以現在TDBGrids裡面共有 修改後的A+B 資料
全部修改完後,在一起批次更新到資料庫裡 (TDBGrids -> acelutfQu) 如果使用
select * from acelutf where ordno>='1' and ordno <= '10' or ordno = '13'
因為我採用的是批次更新,所以新增一筆資料的話
上面的結果就只是顯示資料庫裡面的資料
我之前修改過後的A資料就不存在 我現在的做法是
按 新增 按鈕後,會把我要新增的那筆從資料庫刪除,
而刪除的資料那筆資料在重新計算之後,在Append到acelutf裡
delete acelutf where ordno='13' acelutfQu.Append;
acelutfQuordno.Value := 13
acelutfQurel_o1.Value := m_qty; 大約是上述的語法,會呈現我所要的畫面,
不過有沒有更方便、更聰明的方法,
不用刪除後新增,便可達到我所要的畫面?? 不知我的敘述是否可以明確表達我的意思
|
pillar62
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
Chance36
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
depblue 你好 個人覺得你這個需求使用midas技術最適合不過了 用一個TClientDataSet(搭配TDataSet及TDataSetProvider元件)取得第一個查詢資料,再用另一個TClientDataSet取得另一個查詢資料,並將它合併到第一個TCLientDataSet中(可無限次數的查詢併入動作),經過修改後,然後一起更新回資料庫。 你要的是這個嗎? _______________________________________
深藍的魚,祝您好運..........連連
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |