TQuery 的 SQL command 長度只限 256 ? |
|
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: TQuery 的 SQL command 似乎只能允許長度 256 個字元的 command string 超過 256 的部分在執行時會被自動切掉, 造成 command 錯誤 請問 若欲查詢的 command 很長時(超過 256 個字元)該怎麼辦呢 ?? thanks!!我查了一下 TQuery.SQL 是宣告成 TStrings, 理論上應該可以到好幾 GB 的容量. 不知道您是如何使用的 ? 一般是這樣下 SQL 語法: TQuery.SQL.Clear; TQuery.SQL.Add('select * from TestTable');
------
將問題盡快結案也是一種禮貌! |
||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
因為是要同時從好幾個不同的 Table 中 select 出資料,
因此無法用萬用字元,
我的SQL 語法如下 Query1.SQL.Clear;
Query1.SQL.Add('select PC_BS.PC_paper_num as f1, PC_BS.PC_date, PC_BS.PC_depart, MN_DT.MN_short_name, PC_DT.item_num, MT_DT.MT_code, PC_DT.unit_name, PC_DT.unit_price, PC_DT.coin, PC_DT.quantity ,PC_BS.rcv_date,PC_BS.ava_ex_date, PC_BS.act_ex_date, PC_BS.Fax, PC_BS.memo, PC_DT.need_date, PC_DT.stock, PC_DT.hint_card, PC_DT.supply_num, PC_DT.memo, MT_DT.MT_name from PC_BS, PC_DT, MT_DT, MN_DT where MT_DT.MT_code = PC_DT.MT_code and PC_BS.PC_paper_num = PC_DT.PC_paper_num and PC_BS.MN_code = MN_DT.MN_short_name order by f1');
Query1.Open; 執行時出現以下訊息 String literals may have at most 255 elements
|
||
天外來客
初階會員 發表:22 回覆:199 積分:44 註冊:2001-11-27 發送簡訊給我 |
改成
Query1.SQL.Text := 'select PC_BS.PC_paper_num as f1, PC_BS.PC_date, PC_BS.PC_depart, MN_DT.MN_short_name, PC_DT.item_num, MT_DT.MT_code, PC_DT.unit_name, PC_DT.unit_price, PC_DT.coin, PC_DT.quantity ,PC_BS.rcv_date,PC_BS.ava_ex_date, PC_BS.act_ex_date, PC_BS.Fax, PC_BS.memo, PC_DT.need_date, PC_DT.stock, PC_DT.hint_card, PC_DT.supply_num, PC_DT.memo, MT_DT.MT_name from PC_BS, PC_DT, MT_DT, MN_DT where MT_DT.MT_code = PC_DT.MT_code and PC_BS.PC_paper_num = PC_DT.PC_paper_num and PC_BS.MN_code = MN_DT.MN_short_name order by f1' ; Try 一下看看吧....
不要用 add 的 直接把值丟進去...
|
||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 用 Query1.SQL.Text 的結果和用 Query1.SQL.Add 的結果都相同耶 !! 還有沒有別的方法呢 ? thanks!如果你中間有用 分隔字串,是只能到 255,可用變數分段加。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
cbrskimo
一般會員 發表:9 回覆:14 積分:4 註冊:2002-03-13 發送簡訊給我 |
|||
klmer
一般會員 發表:11 回覆:46 積分:13 註冊:2002-03-13 發送簡訊給我 |
嗯嗯 分段加應該是可能
我想只是差在那個換行符號 而且個人建議可以把 SQL 分開寫 select PC_BS.PC_paper_num as f1, PC_BS.PC_date, PC_BS.PC_depart,
MN_DT.MN_short_name, PC_DT.item_num, MT_DT.MT_code,
PC_DT.unit_name, PC_DT.unit_price, PC_DT.coin,
PC_DT.quantity ,PC_BS.rcv_date,PC_BS.ava_ex_date,
PC_BS.act_ex_date, PC_BS.Fax, PC_BS.memo,
PC_DT.need_date, PC_DT.stock, PC_DT.hint_card,
PC_DT.supply_num, PC_DT.memo, MT_DT.MT_name
FROM PC_BS, PC_DT, MT_DT, MN_DT
WHERE MT_DT.MT_code = PC_DT.MT_code and
PC_BS.PC_paper_num = PC_DT.PC_paper_num and
PC_BS.MN_code = MN_DT.MN_short_name
Order by f1 這樣以後比較好 maintain ^^"...
|
||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|||
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|||
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 我試過利用變數分段加 結果還是不行 錯誤訊息是 驅動程式參數太少預期個數 2 我在 Query1.Open 前加一行 ShowMessage(sqlCommand); 結果出現的 sqlcommand 還是在一半的地方被截掉了 各位高手快快幫我想想辦法吧 ! thanks !您可以用這樣方式分段加入看看, 而且每一段後面可以不用空格. Query1.SQL.Add('select * from TableName'); Query1.SQL.Add('where aaa = :aaa and'); Query1.SQL.Add('bbb = :bbb and'); Query1.SQL.Add('ccc = :ccc'); Query1.SQL.Add('order by aaa'); ShowMessage 的參數是 String 當然會被切斷.
------
將問題盡快結案也是一種禮貌! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |