有append功能的Query元件 SQL語法內有Token錯誤 |
答題得分者是:SwingGuppy
|
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
請教各位大大:
小的有一個QUERY,因為需要delete的功能,所以將屬性CachedUpdates與RequestLive兩個設成true 其SQL語法內有decode判斷不同的字串,要顯示不同的結果字串,故有用到單引號(將字串圈起來) SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','')) AS LN FROM T 可是變成有錯誤訊息,找不出原因,請有空的人幫忙一下,感恩~ |
SwingGuppy
初階會員 發表:1 回覆:18 積分:38 註冊:2006-12-28 發送簡訊給我 |
===================引 用 moko 文 章=================== 請教各位大大: 小的有一個QUERY,因為需要delete的功能,所以將屬性CachedUpdates與RequestLive兩個設成true? 其SQL語法內有decode判斷不同的字串,要顯示不同的結果字串,故有用到單引號(將字串圈起來)? SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','')) AS LN FROM T? 可是變成有錯誤訊息,找不出原因,請有空的人幫忙一下,感恩~ ======================================================= 錯誤是發生在DECODE(.....)後面多了一個 右括號 ')'
------
受人點滴,湧泉以報。
編輯記錄
|
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
hi SwingGuppy:
您好,不好意思,是我po文章時手誤多打了個 ) 實際上的沒有,所以問題還是存在 SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','') AS LN FROM T 再麻煩大家有沒有其他解法?感恩~ ===================引 用 SwingGuppy 文 章=================== ===================引 用 moko 文 章=================== 請教各位大大: 小的有一個QUERY,因為需要delete的功能,所以將屬性CachedUpdates與RequestLive兩個設成true? 其SQL語法內有decode判斷不同的字串,要顯示不同的結果字串,故有用到單引號(將字串圈起來)? SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','')) AS LN FROM T? 可是變成有錯誤訊息,找不出原因,請有空的人幫忙一下,感恩~ ======================================================= 錯誤是發生在DECODE(.....)後面多了一個 右括號 ')' |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
錯誤訊息已經說的很明確啦~
你錯用了關鍵字LENGTH,Length是Delphi的函數,,如果你是用MSSQL那麼SQL陳述式計算字串長度函數應該是LEN。 ===================引 用 moko 文 章=================== 請教各位大大: 小的有一個QUERY,因為需要delete的功能,所以將屬性CachedUpdates與RequestLive兩個設成true 其SQL語法內有decode判斷不同的字串,要顯示不同的結果字串,故有用到單引號(將字串圈起來) SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','')) AS LN FROM T 可是變成有錯誤訊息,找不出原因,請有空的人幫忙一下,感恩~ |
SwingGuppy
初階會員 發表:1 回覆:18 積分:38 註冊:2006-12-28 發送簡訊給我 |
SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID, INSTR(T.ITEMID,'-') 1, (LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-')))), 'L3/4','201','L4/5','301','') AS LN FROM T
我以前用Oracle時也常碰到這個問題,目前手邊沒有機器可以測,要請其他高手幫幫忙了。 建議你加上紅色的那兩個括弧。 Stallion大大不好意思,我不清楚發問者的資料庫用哪種,不過我覺得比較像是Oracle
------
受人點滴,湧泉以報。 |
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
感謝上面兩位的回覆
小的使用的是ORACLE,而且一定是sql在PLSQL測過才會放到query內使用~ 也加了SwingGuppy的括號,但還是沒改變 個人覺得問題是出在Catchedupdates與RequestLive兩個屬性上 因為設為false就不會有問題了說~but我需要有delete的功能哩~真是摳鬧啊~ ===================引 用 SwingGuppy 文 章=================== SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID, INSTR(T.ITEMID,'-') 1,? (LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-')))), 'L3/4','201','L4/5','301','') AS LN FROM T 我以前用Oracle時也常碰到這個問題,目前手邊沒有機器可以測,要請其他高手幫幫忙了。 建議你加上紅色的那兩個括弧。 Stallion大大不好意思,我不清楚發問者的資料庫用哪種,不過我覺得比較像是Oracle |
SwingGuppy
初階會員 發表:1 回覆:18 積分:38 註冊:2006-12-28 發送簡訊給我 |
不曉得你是不是用BDE,如果是的話請檢查 confiuration -> Drivers -> native -> Oracle -> DLL32
將預設值SQLORA8.DLL改成SQLORA32.DLL ===================引 用 moko 文 章=================== 感謝上面兩位的回覆 小的使用的是ORACLE,而且一定是sql在PLSQL測過才會放到query內使用~ 也加了SwingGuppy的括號,但還是沒改變 個人覺得問題是出在Catchedupdates與RequestLive兩個屬性上 因為設為false就不會有問題了說~but我需要有delete的功能哩~真是摳鬧啊~
------
受人點滴,湧泉以報。 |
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
小的本來就用SQLORA32.DLL 了說~
===================引 用 SwingGuppy 文 章=================== 不曉得你是不是用BDE,如果是的話請檢查 confiuration -> Drivers -> native -> Oracle -> DLL32 將預設值SQLORA8.DLL改成SQLORA32.DLL ===================引 用 moko 文 章=================== 感謝上面兩位的回覆 小的使用的是ORACLE,而且一定是sql在PLSQL測過才會放到query內使用~ 也加了SwingGuppy的括號,但還是沒改變 個人覺得問題是出在Catchedupdates與RequestLive兩個屬性上 因為設為false就不會有問題了說~but我需要有delete的功能哩~真是摳鬧啊~ |
SwingGuppy
初階會員 發表:1 回覆:18 積分:38 註冊:2006-12-28 發送簡訊給我 |
我想問題應該是出在TQuery的RequestLive只能一次對應到一個Table,
RequestLive設為true後,decode(...)中的許多函數都被當成Table欄位,BDE認不出來於是產生錯誤。 VCL Reference RequestLive property (TQuery) ..... A true value for RequestLive is a request for an updatable result set. It does not guarantee that the database back-end will return an updatable result set. ..... Note: All multi-table queries return read-only result sets. 可用CanModify屬性來檢測Query出來的Dataset是否可以修改。
------
受人點滴,湧泉以報。
編輯記錄
|
system72
中階會員 發表:15 回覆:114 積分:55 註冊:2005-08-17 發送簡訊給我 |
如果是 ( ) 數目 對不對稱的問題,可以用Rainbow Editor 來看,還可,先成Html格式,在複製貼到討論區如下: 這樣就可以保留顏色. DECODE( TRIM( SUBSTR( T.ITEMID, INSTR(T.ITEMID,'-') 1, LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-') ) ), 'L3/4','201','L4/5','301','')) ===================引 用 moko 文 章=================== 請教各位大大: 小的有一個QUERY,因為需要delete的功能,所以將屬性CachedUpdates與RequestLive兩個設成true? 其SQL語法內有decode判斷不同的字串,要顯示不同的結果字串,故有用到單引號(將字串圈起來)? SELECT T.*, DECODE(TRIM(SUBSTR(T.ITEMID,INSTR(T.ITEMID,'-') 1,LENGTH(T.ITEMID)-INSTR(T.ITEMID,'-'))), 'L3/4','201','L4/5','301','')) AS LN FROM T? 可是變成有錯誤訊息,找不出原因,請有空的人幫忙一下,感恩~ |
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
大家好 我看了書上的確也是說TQuery的RequestLive只能一次對應到一個Table, 書上說可以再使用一個TUpdateSQL元件來解決這個問題 我也試過是可行的 再此感謝大家的幫忙~~感恩! ===================引 用 SwingGuppy 文 章=================== 我想問題應該是出在TQuery的RequestLive只能一次對應到一個Table,?? RequestLive設為true後,decode(...)中的許多函數都被當成Table欄位,BDE認不出來於是產生錯誤。 ?VCL Reference RequestLive property (TQuery) ..... A true value for RequestLive is a request for an updatable result set. It does not guarantee that the database back-end will return an updatable result set. ..... Note:?All multi-table queries return read-only result sets. 可用CanModify屬性來檢測Query出來的Dataset是否可以修改。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |