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

如何取得Select Sum() 的返回值

答題得分者是:NO.5
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-08 12:30:20 IP:218.103.xxx.xxx 未訂閱
各位: 我要統計一個表單的Salary的總數,用了以下語句 Select sum(Salary) from TableName, 但如何取得返回值? 非常感謝。
pigbaby
初階會員


發表:2
回覆:84
積分:47
註冊:2002-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-08 12:36:41 IP:210.200.xxx.xxx 未訂閱
ADO1.SQL.ADD('Select sum(Salary) AS SSUM from TableName'); ADO1.SQL.OPEN; ADO1.FIELDBYNAME('SSUM').VALUE <--這樣就能取出來了
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-08 15:02:17 IP:218.103.xxx.xxx 未訂閱
先感謝大大的回復,非常有用,但是我發現,如果Table's RecordCount = 0 時,就會出現錯誤,爲什麽?應該怎樣解決?
NO.5
初階會員


發表:18
回覆:35
積分:25
註冊:2005-02-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-08 15:34:13 IP:210.64.xxx.xxx 未訂閱
引言: ADO1.SQL.ADD('Select sum(Salary) AS SSUM from TableName'); ADO1.SQL.OPEN; ADO1.FIELDBYNAME('SSUM').VALUE <--這樣就能取出來了
你好: 小弟僅就以BDE元件存取Oracle資料庫的狀況下,提供一個解決的方法,程式碼如下:
VAR
   WK_SUM: INTEGER;
...........
   WITH Query1 DO
   BEGIN
      SQL.Add('Select sum(Salary) from TableName');
      Prepare;
      Open;
      WK_SUM := FieldByName('sum(Salary)').AsInteger;
   END;
如此存於變數WK_SUM中的值就是你要的值,或者也可以如上一位先進般,使用Alias Name的方式,程式碼如下:
VAR
   WK_SUM: INTEGER;
...........
   WITH Query1 DO
   BEGIN
      SQL.Add('Select sum(Salary) SSUM from TableName');
      Prepare;
      Open;
      WK_SUM := FieldByName('SSUM').AsInteger;
   END;
紅色的部分就是sum(Salary)的Alias Name,就我本身而言,某些時候會對該Field欄位作許多的編輯,使用Alias Name可以方便許多,請試試看!! 另外,因為我本身沒有使用ADO元件的經驗,想請問pigbaby,您的第二行程式碼,Open本來就應該是放在SQL之下嗎? 謝謝.
NO.5
初階會員


發表:18
回覆:35
積分:25
註冊:2005-02-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-08 15:42:13 IP:210.64.xxx.xxx 未訂閱
引言: 先感謝大大的回復,非常有用,但是我發現,如果Table's RecordCount = 0 時,就會出現錯誤,?什??應該怎樣解決?
應該是因為沒有傳回值,所以產生錯誤,我都是使用下列程式碼避免產生無傳回值的錯誤:
........
Open;
IF RecordCount > 0
THEN
  do -something;
........
,請試試看!!
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-08 16:58:45 IP:218.103.xxx.xxx 未訂閱
這個論壇真的太有用了,由各位的幫助,小弟真的很感謝!
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-08 19:48:31 IP:218.103.xxx.xxx 未訂閱
真的非常抱歉,剛才忽略了一個問題。 因爲Recordset.Fields['Salary']的值是Variant類型,所以儅我把值賦給一個Double類型的參數時會發生錯誤,怎麽辦? 如果我把它付給Variant參數后,如何轉換為Double類型?
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-08 21:00:19 IP:218.103.xxx.xxx 未訂閱
Open; IF RecordCount > 0 THEN do -something; ........ 我用以上的語句的時候,發現,就算表單沒有Record,返回的RecordCount也會等於1,這是爲什麽?
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-08 21:45:07 IP:218.103.xxx.xxx 未訂閱
經過多次的測試,我發現,用了Select Sum()語句后,就算沒有任何Record存在,返回的RecordCount也不會等於0。
BorlandAndy001
一般會員


發表:12
回覆:19
積分:6
註冊:2004-09-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-08 22:31:10 IP:218.103.xxx.xxx 未訂閱
終于搞明白了,我漏用了"Group By",所以出錯。真不好意思!
系統時間:2024-06-18 21:46:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!