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

SQL字串問題...

答題得分者是:pcjung
7-11
一般會員


發表:53
回覆:33
積分:16
註冊:2005-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-09 20:58:56 IP:220.142.xxx.xxx 訂閱
請問各位大大...我想用下面這種方式動態更改SQL裡面的字串...但string型態好像存不下...= =|||,會告訴我超過255個字,請問該如何解決?

<textarea class="delphi" rows="10" cols="60" name="code"><br />
var STR : String

STR :=SELECT STNID,SUM(CASE CNUM WHEN '02' THEN nspoil ELSE 0 END) AS nspo2,
SUM(CASE CNUM WHEN '03' THEN nspoil ELSE 0 END) AS nspo3,
SUM(CASE CNUM WHEN '04' THEN nspoil ELSE 0 END) AS nspo4,
SUM(CASE CNUM WHEN '05' THEN nspoil ELSE 0 END) AS nspo5,
SUM(CASE CNUM WHEN '02' THEN nspmey ELSE 0 END) AS nspm2,
SUM(CASE CNUM WHEN '03' THEN nspmey ELSE 0 END) AS nspm3,
SUM(CASE CNUM WHEN '04' THEN nspmey ELSE 0 END) AS nspm4,
SUM(CASE CNUM WHEN '05' THEN nspmey ELSE 0 END) AS nspm5,
SUM(nspoil) AS nsptalo,
SUM(nspmey) AS nsptalm
FROM (SELECT STATION.STNID,OIL_MCH.CNUM,SUM(VAL_O - VAL_TEST) AS nspoil,SUM(FMEY_TAL) AS nspmey FROM STATION LEFT JOIN OIL_MCH ON OIL_MCH.STNID = STATION.STNID AND PDATE = '20070508' AND CLSS = '2' GROUP BY STATION.STNID,OIL_MCH.CNUM) AS a GROUP BY STNID ORDER BY STNID ;


ADOQuery1.Close;
ADOQuery1.SQL.ADD(STR);
ADOQuery1.Open;
</textarea>
編輯記錄
7-11 重新編輯於 2007-05-09 20:59:32, 註解 無‧
7-11 重新編輯於 2007-05-09 21:00:02, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-09 21:53:32 IP:211.22.xxx.xxx 未訂閱
我碰到過這種問題,不是STRING型態的問題,STRING可以存2G的資料哪可能存不下!是ADOQUERY!
解決方法很簡單,把你的SQL字串拆成數段,然後一次次的ADD上去。
ADOQUERY1.SQL.ADD('第一段');
ADOQUERY1.SQL.ADD('第二段');
ADOQUERY1.SQL.ADD('第三段');
...
pcjung
一般會員


發表:1
回覆:17
積分:13
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-10 11:41:23 IP:61.221.xxx.xxx 訂閱
Delphi 的 String 預設為 AnsiString ,容量最大可到 2GB ,所以和String是沒關係的,我實地用你的範例試了一下,發現你語法最後一行長度大於 255 ,如果把那一行拆成二行就 OK 了,你趕緊試一下吧。
------
--Written by max
系統時間:2024-05-20 16:23:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!