全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1341
推到 Plurk!
推到 Facebook!

oracle 出現不是單一群體的群體函數錯誤!

尚未結案
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-16 08:59:38 IP:210.243.xxx.xxx 未訂閱
我在Delphi 執行一段SQL 語法對oracle 8.17資料庫,會出現 一個 "不是單一群體的群體函數"的錯誤! With Form1.AdoQuery3 do begin Close; Sql.Clear; Sql.Add('Select sum(M_Get) from M_Account2'); sql.Add('where M_No = :kk'); parameters.ParamValues['kk'] := '1'; Open; end; 這段語法如果直接在sql plus 是沒問題的.. 這是不是Parameters.參數問題呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-16 09:11:34 IP:202.62.xxx.xxx 未訂閱
您好﹗    M_Account2后面少了一個空格﹕ With Form1.AdoQuery3 do begin Close; Sql.Clear; Sql.Add('Select sum(M_Get) from M_Account2_'); //以上紅色下划線處代表一個空格 sql.Add('where M_No = :kk'); parameters.ParamValues['kk'] := '1'; Open; end; ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-16 10:01:37 IP:210.243.xxx.xxx 未訂閱
感謝大大的回答: 試過了,還是一樣的問題呢.出現一樣的錯誤! 我感覺好像是跟參數有關吧? Vincent wei
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-16 12:33:32 IP:210.64.xxx.xxx 未訂閱
你好,試試看如果把ParamValues改成ParamByName的話呢?? With Form1.AdoQuery3 do begin Close; Sql.Clear; Sql.Add('Select sum(M_Get) from M_Account2'); sql.Add('where M_No = :kk'); parameters.ParamByName['kk'] := '1'; Open; end; Pillar Wang
------
Pillar Wang
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-16 12:58:24 IP:202.62.xxx.xxx 未訂閱
引言: 我在Delphi 執行一段SQL 語法對oracle 8.17資料庫,會出現 一個 "不是單一群體的群體函數"的錯誤! With Form1.AdoQuery3 do begin Close; Sql.Clear; Sql.Add('Select sum(M_Get) from M_Account2'); sql.Add('where M_No = :kk'); parameters.ParamValues['kk'] := '1'; Open; end; 這段語法如果直接在sql plus 是沒問題的.. 這是不是Parameters.參數問題呢?
您好﹗ 确定一下KK欄位是字串形態嗎﹖如果不是的話﹐更改ParamValues['kk']后的形態敘述﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-16 13:11:52 IP:210.243.xxx.xxx 未訂閱
我的M_No 欄位是字串型態,所以型態上是沒錯的.如下顯示: SQL> Desc M_Account2 名稱 空值? 類型 ----------------------------------------- -------- ----------- M_NO NOT NULL VARCHAR2(7) M_KEY NUMBER M_GET NUMBER 我也把他改成parambyname 的方式. 好像也是出現一樣的問題? With Form1.AdoQuery3 do begin Close; Sql.Clear; Sql.Add('Select sum(M_Get) from M_Account2 '); sql.Add('where M_No = :kk'); parameters.ParamByName('kk').Value:= '1'; Open; end; 弄不懂原因?
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-16 13:36:01 IP:210.64.xxx.xxx 未訂閱
你好 那如果你在sql語法裡面再加上 group by M_No ,或是用另一種方式 AdoQuery3.sql.text = ' Select sum(M_Get) from M_Account2' 'where M_No = ''' XXX ''' '的方式呢?? Pillar Wang
------
Pillar Wang
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-16 16:43:56 IP:210.243.xxx.xxx 未訂閱
我試過..用 AdoQuery3.sql.text = ' Select sum(M_Get) from M_Account2' 'where M_No = ''' XXX ''' '的方式是可以的. 用Group by 是不行的. 我剛剛查了一下資料. 好像是Ado 的Bug 好像找不到更好的解決方式了. 只剩下這種方式.
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-16 17:44:45 IP:210.64.xxx.xxx 未訂閱
你好 如果你的版本是delphi5那就要更新新的版本喔!它有一個ADO的更新程式!! Pillar Wang
------
Pillar Wang
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-18 10:55:53 IP:210.243.xxx.xxx 未訂閱
我目前是用D7 聽說D6 也是同樣的問題! D8不知道改善了沒有?
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-20 02:28:13 IP:203.73.xxx.xxx 未訂閱
請問你的ADO Connection 是直接連至 Oracle 還是透過 ODBC ? 若是後者, Oracle ODBC Version 為何? 試看看更新一下ODBC Version 如何 .... 要不, 改成 sum(M_Get) as mGet from ... 試試 !!
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-05-03 08:31:44 IP:210.243.xxx.xxx 未訂閱
我是用AdoConnect 直接連Oracle ,沒有透過ODBC. 改成大大說的序述也有同樣的問題.
系統時間:2024-11-25 23:28:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!