線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1086
推到 Plurk!
推到 Facebook!

ADOQuery 無法順利使用 OnCaclField 做運算!!

答題得分者是:bestlong
yu168
一般會員


發表:29
回覆:27
積分:16
註冊:2002-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-07 15:13:29 IP:59.124.xxx.xxx 訂閱
請教各位
ADOQuery 要使用 OnCaclFields 是否有那些要地方要注意的?
我在 DesignTime 時在 ADOQuery 內按右鍵 New 一個 名為 Percent, type 為 CaclField 的欄位,
然後在 OnCaclFiels 內寫
DataSet.FieldbyName('Percent').value := round(dataSet.fieldbyName('Usecount').calue/dataset.fieldbyname('totalcount').value*100);
在執行時都會發生錯誤, 好像是找不到 UseCount 和 TotalCount 兩個欄位,
這兩個欄位是寫在 SQL 指令內, 但是我試著用一個迴圈來讀取 Query 回來的 Dataset 時只能找到在 Designtime 新增的 Percent 欄位而已!!! 怎會這樣子呢??
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-07 15:30:14 IP:59.104.xxx.xxx 訂閱
你新增了一個計算欄位,但是ADOQuery 的欄位編輯器中是否同時有其他原本你 Query 的資料欄位?
基本上欄位編輯器沒有設定欄位時,就會已取得的全部資料欄來顯示
當你有設定時就已你加入的欄位為準
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
yu168
一般會員


發表:29
回覆:27
積分:16
註冊:2002-06-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-07 15:54:21 IP:220.130.xxx.xxx 訂閱
那如果我想在每取回一筆到Client端的同時順便作運算的話, 要如何做比較好??
本來是直接在 SQL 指令內作運算, 但是那會比較耗 DB Server 的資源, 所以我想讓這個計算功能讓 Client 端來處理, 因為我測試過, 如果用 Server 來算的話, 一個 Query 約 90 秒, 但是如我不要由 Server 來算的話, 大概約 10 秒, 所以我覺得速度上差太多了.....
===================引 用 文 章===================
你新增了一個計算欄位,但是ADOQuery 的欄位編輯器中是否同時有其他原本你 Query 的資料欄位?
基本上欄位編輯器沒有設定欄位時,就會已取得的全部資料欄來顯示
當你有設定時就已你加入的欄位為準
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-07 17:47:53 IP:59.104.xxx.xxx 訂閱
我說清楚一些好了
假設你的資料表欄位有 id, UseCount, TotalCount
而你執行的 SQL 是 select * form tb1
這樣你的 ADOQuery.Open 時,而 ADOQuery 欄位編輯器沒有任何項目時
這樣 ADOQuery 會認為全部欄位都要用到而自動生成三個 DataField 物件對應
這樣可以操作的欄位就會有 id, UseCount, TotalCount

接著你想做計算,所以你在欄位編輯器中加入一個計算欄位 Percent 後
然後 ADOQuery.Open 會從資料庫取得三個欄位資料,
不過因為你有自行在欄位編輯器中欄位所以就不會自動將三個欄位產生 DataField 物件去對應
反而會以欄位編輯器內的設定來套用,所以此時你可以操作的欄位只有 Percent 這個欄位
而對讀取 UseCount, TotalCount 兩個欄位的程式部份就產生錯誤

這個時候只要在欄位編輯器中按下右鍵 Add Fields 加入你要使用的欄位或是 Add all fields 加入所有欄位。
這樣 ADOQuery 就可以操作你所加入的所有欄位。
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
系統時間:2024-11-23 1:52:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!