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

可否控制 select sum(Wages) into 的欄位型態為integer

尚未結案
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-30 17:58:16 IP:218.160.xxx.xxx 未訂閱
各位大哥: 小弟用 Select IDName , sum(Wages) into ... group by IDName ...有個問題。小弟發現如此出來的sum欄位型態固定是Float,如果小弟須要它是Integer型態,要如何處理?
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-30 18:09:08 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試這樣行不行﹕ Select IDName , Sum(Round(Wages)) into ... group by IDName ... ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-30 18:33:31 IP:218.160.xxx.xxx 未訂閱
謝謝版主,小弟剛試過還是不行。 小弟依版主講的試過 sum(round(wages)),及round(sum(wages)) 均是Float結果。 可能因為select into / Sum 時是固定成Float欄位型態吧。 小弟的Wages欄本即是 integer 小弟的問題關鍵是這個Module被整個系統到處召喚,且相關的碼一票子綁死,真是傷腦筋。要改寫這些N年的老系統真是很吃力的。再努力中。 謝謝版主。 努力中...
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-30 19:10:52 IP:61.66.xxx.xxx 未訂閱
Hi, please use the cast(sum(Wages) as int) syntax
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-31 07:22:49 IP:61.231.xxx.xxx 未訂閱
謝謝前輩大力相助。還是失敗了。 小弟的試的語法是 select IDName , cast(sum(wages) as int) into aTest from SalaryTable group by IDName 維護前賢這些老系統真是很吃力。由其是共用性很高的模組的部份,真是很緊張,就怕它不知何處會冒問題出來,到時就慘了。 這個老系統實在活的太久了,應用的資料庫有Paradox7及Access及MSSQL,讓接手維護的人很是吃力。小弟剛才用Paradox/Access的資料庫試過,回應是『無法指出的錯誤』,等下到辦公室再試試看MSSQL可不可以。 發表人 - morganboy 於 2004/08/31 07:28:03
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-31 09:18:53 IP:202.62.xxx.xxx 未訂閱
您好﹗    可以解釋一下您這個要求的工作目的是什么﹖如果是將SQL敘述擷取到的結果再用于其它方面的計算等﹐我想結果是Integer形態或是Float形態似乎并不重要﹐可以在取出欄位值時再做取整的動作﹐如﹕
Var
  I : Integer;
begin
  I := Round(Query1.FieldByName('欄位名').AsFloat); //四舍五入
  // I := Trunc(Query1.FieldByName(欄位名').AsFloat); //無條件舍去小數取整
供參考﹒ ========================= 大病初愈﹐休養調整中... ========================= 發表人 - cashxin2002 於 2004/08/31 09:20:55
------
忻晟
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-31 09:53:39 IP:210.241.xxx.xxx 未訂閱
這是個薪資系統,客戶使用的規模約在100人至三千人之間。這個部份功能是製作當月薪資的媒體磁片,它在薪資主畫面時以Select .. , sum() into 將各人薪資統計總數存中間檔,再啟動一個專作媒體磁片的Form作處理。在這個Form中用Query-select CTable.WageSum ... from ATable , BTable , CTable 來由這個檔及另兩個檔抓資料。這個CTable.WageSum在Select-InTo/sum時是Float,可是在這個Query-TField時已設為int,所以程式就會當出來。 我想或許我該換一條路來走,真的不行,跟老板報告一下,把結構改掉。我想跟本就不要用這個寫死的Query-TField,這我要再試試... 我昨天用Paradox/Access的DB作是如此,剛才在公司的MSSQL-EnterPrise跑時又發現它出來的中間檔欄竟然是int,而且程式竟然也過了。只是這個系統的客戶用Paradox/Access的比例還不小,我還是要走單一架構來處理就好。 就照前輩講的,換條路來走走看好了。我今天應該可以將新的想法試出個頭緒來,結果再貼出來請大家指正。
MorganBoy
一般會員


發表:14
回覆:75
積分:22
註冊:2003-04-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-31 11:53:24 IP:210.241.xxx.xxx 未訂閱
小弟問題解決了。處理如下: 1.由舊拷個新Form來,加個WorkAdoTable/WorkAdoTableDS,再將DBGrid-DataSource改接到這個WorkAdotableDS來。 2.上層以原SQL抓這三個表的資料後再丟給這個Form.WorkAdoTable.RecordSet來 3.當然上層須用Select Employee.IDName as 姓名...等以加上中文欄標﹝原先DB-Stru為英文欄名﹞,進入這個Form後還要修這個Form-DBGrid的TColumn屬姓以改善外關。 新的架構又簡單又通用。原來就是如此。 謝謝前輩們的大力相助。
系統時間:2024-06-29 23:54:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!