SELECT的複數如何填在EDIT,並以逗號為區隔 |
答題得分者是:careychen
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
小弟寫段SQL
SELECT PART FROM TABLE PART 1 2 3 .以此類退 然後要把PART 的值 放在 EDIT 上面 如果SELECT 出來只有一各PART 放EDIT 沒問題 如果SELECT 出來有兩各以上 小弟該怎麼寫才可以都顯示在EDIT上 並且以逗號為區隔呢 1,2,3 <-- 像這樣顯示在同一格EDIT1 以下為原始碼 [code delphi] SELECT PART FROM TABLE Edit1.Text := ClientDataSet1.FieldByName('PART').AsString; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet 編輯記錄
lovemari 重新編輯於 2008-12-02 16:00:43, 註解 無‧
|
foxelf
初階會員 發表:9 回覆:42 積分:30 註冊:2003-03-05 發送簡訊給我 |
最簡單的方式就是用迴圈去做了
===================引 用 lovemari 文 章=================== 小弟寫段SQL SELECT PART FROM TABLE PART 1 2 3 .以此類退 然後要把PART 的值 放在 EDIT 上面 如果SELECT 出來只有一各PART 放EDIT 沒問題 如果SELECT 出來有兩各以上 小弟該怎麼寫才可以都顯示在EDIT上 並且以逗號為區隔呢 1,2,3 <-- 像這樣顯示在同一格EDIT1 以下為原始碼 [code delphi] SELECT PART FROM TABLE Edit1.Text := ClientDataSet1.FieldByName('PART').AsString; [/code] |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
HI, 有兩種方式,參考看看
第一種,使用 SQL [code delphi] with ADOQuery1 do begin SQL.Text := 'Declare @sPart varchar(1000); Set @sPart = '';' 'Select @sPart=@sPart Cast(Part as varchar(10)) '','' from Table;' 'Select SubString(@sPart, 1, Len(@sPart)-1) Part'; Open; Edit1.Text := FieldByName('PART').AsString; Close; end; [/code] 第二種,使用 Delphi 本身 [code delphi] with ADOQuery1 do begin SQL.Text := 'SELECT PART FROM TABLE'; Open; while Not Eof do begin Edit1.Text := Edit1.Text FieldByName('PART').AsString ','; Next; end; Close; if (Edit1.Text <> '') then Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text)-1); end; [/code] ===================引 用 lovemari 文 章=================== 小弟寫段SQL SELECT PART FROM TABLE PART 1 2 3 .以此類退 然後要把PART 的值 放在 EDIT 上面 如果SELECT 出來只有一各PART 放EDIT 沒問題 如果SELECT 出來有兩各以上 小弟該怎麼寫才可以都顯示在EDIT上 並且以逗號為區隔呢 1,2,3 <-- 像這樣顯示在同一格EDIT1 以下為原始碼 [code delphi] SELECT PART FROM TABLE Edit1.Text := ClientDataSet1.FieldByName('PART').AsString; [/code]
------
價值的展現,來自於你用哪一個角度來看待它!! |
douglas
初階會員 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好, mysql 有一個 group_concat 可以用 oracle 的話 with data as ( select part from table) select sys_connect_by_path(part,',') part from data 我現在沒空實測, 參考一下 ========================================================== 雖已結案, 但仍然修改一下內容, 我覺得有參考價值, 又可留在這裡當成我的筆記 : 我實測了上述方法, 並不成功, 我會再測 我另外找到一個方法, 實測可行, 先整個 post 上來, 再看看有無方法寫得更簡潔 : 1. 先 create 一個 function CREATE OR REPLACE FUNCTION matrix (query_in in VARCHAR2) RETURN VARCHAR2 IS incoming varchar2(4000); hold_result varchar2(4000); c sys_refcursor; Begin open c for query_in; loop fetch c into incoming; exit when c%notfound; hold_result := hold_result||','||incoming; end loop; return ltrim(hold_result,','); END; / 2. 呼叫 select matrix('select part from table order by part') parts from dual;
仔細看的結果, 發覺和用 delphi 來做後製作 的邏輯類似 只是他是寫在 oracle 端, 不同於一般寫在 delphi 端 寫成 oracle 端的 function 有好處, 就是 delphi 或其他 client 端 直接使用即可, 不必每次都要寫一段相類似的邏輯. ========================================================== 另一個方法也試出來了 Select Substr(Sys_Connect_By_Path(part, ','), 2) From (Select Rownum Rid, Rownum 1 Next_Rid, part From table) Where Rid = (Select Count(*) From table) Start With Rid = 1 Connect By Prior Next_Rid = Rid ===================引 用 lovemari 文 章=================== 小弟寫段SQL SELECT PART FROM TABLE PART 1 2 3 .以此類退 然後要把PART 的值 放在 EDIT 上面 如果SELECT 出來只有一各PART 放EDIT 沒問題 如果SELECT 出來有兩各以上 小弟該怎麼寫才可以都顯示在EDIT上 並且以逗號為區隔呢 1,2,3 <-- 像這樣顯示在同一格EDIT1 以下為原始碼 [code delphi] SELECT PART FROM TABLE Edit1.Text := ClientDataSet1.FieldByName('PART').AsString; [/code]
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
首先 先謝謝各位抽空回答小弟 因為小弟一試careychen 大大的方法就一次ok 所以小弟結案給了他 再次感謝 ===================引 用 careychen 文 章=================== 第二種,使用 Delphi 本身 [code delphi] with ADOQuery1 do begin SQL.Text := 'SELECT PART FROM TABLE'; Open; while Not Eof do begin Edit1.Text := Edit1.Text FieldByName('PART').AsString ','; Next; end; Close; if (Edit1.Text <> '') then Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text)-1); end; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |