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

如何設計Master/Detail的Report

尚未結案
melody_chang
一般會員


發表:16
回覆:11
積分:5
註冊:2004-09-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-22 17:49:19 IP:211.76.xxx.xxx 未訂閱
我在設計Master/Detail的Report, 表頭是放訂單變更單的主檔(A), 表身是訂單變更單的明細檔(B), 表尾要放整張訂單變更前\後的總金額    設計ADOQuery1, 抓Select * from A 設計ADOQuery2, 抓Select * from B, 兩者建關聯 到這為止, 一切都很正常, 問題是要如何顯示整張訂單變更前\後的總金額    因訂單變更單只顯示有變動的筆數, Ex. 項次  數量  單價 ---- ------ ------ 003    10    100 005    20    200 ----------------------- 變更前總金額  5,000 變更前總金額  7,000    在ADOQuery2此時, 只抓到兩筆, 無法用SUM來求得總金額 我有試過新增ADOQuery3, 關聯ADOQuery1,  設計Select SUM(數量*單價) from B 但compiler時一直有問題, 若select非sum欄位, 就很正常, 請問該如何求得表尾的加總金額?    Melody 
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-25 09:31:17 IP:218.163.xxx.xxx 未訂閱
抱歉 小弟愚見,有錯請指正。 首先您的問題問得有點不太明確,你想問的是變更前與變更後的金額均要顯示嗎?建議是可利用程式方式來計算二者金額,後再以QRLABEL的方式顯示,但應當是你的訂單在變更前後均有作出記錄才行。又或者以加設資料欄位的方式,取得變更前後之金額。 你所指的SELECT的問題,不清楚你的錯誤在那裡,是否為取出合計欄位時,如是,建議你應採以 SELECT SUM(數量*單價) AS 合計 FROM B 來作會方便點。如果無法解決,試試將程式除錯看看,找出問題點或者截取錯誤訊息,貼圖或註明錯誤點,這樣也方便其他先進共同為解決問題。 ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
melody_chang
一般會員


發表:16
回覆:11
積分:5
註冊:2004-09-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-25 14:27:27 IP:211.76.xxx.xxx 未訂閱
不好意思, 可能說得不太清楚, 我再詳述一下資料庫的設計邏輯 1. 每次產生訂單變更單時,系統會自動將訂單資料copy一份過來,將版本設為00,而每次變更訂單,版本就從01開始累計 2. 每次變更訂單時,會將上一版的資料copy一份過來,並在有修改的欄位註記是有變更的    我將程式碼貼上來如下: <ADOQuery1> <ADOQuery2> 之後用FastReport設計報表,在DetailFooter放置一個MEMO,內容為[SUM(AMOUNT)],這樣只能得到版本01, 且有變更的總金額, 但我現在希望在表尾顯示版本00&版本01的全單總金額,不知該如何做,請問各位先進是否有任何的好辦法? 我想試著用ADOQuery3, 抓出此張變更單各種版式的訂單總金額,Compile時OK, 但我當我雙按ADOQuery3時, 準備要加入欄位時,卻顯示錯誤訊息「提供不一致或不完全的資訊導致參數物件不適當地被拒」,因無法加入欄位,所以FastReport就無法編輯,請問各位先進是否能看出問題在那裡? ADOQuery3.Close; ADOQuery3.SQL.Clear; ADOQuery3.SQL.Add('SELECT PCLN.NUM_PO --訂單編號'); ADOQuery3.SQL.Add(', PCLN.COD_CUST --客戶代號'); ADOQuery3.SQL.Add(', PCLN.SER_PO --版本'); ADOQuery3.SQL.Add(', SUM(PCLN.MNY_UNIT*PCLN.QTY_REQ) AS AMOUNT --小計'); ADOQuery3.SQL.Add('FROM MF2000.PCLN'); ADOQuery3.SQL.Add('WHERE PCLN.NUM_PO = :NUM_PO'); ADOQuery3.SQL.Add('AND PCLN.COD_CUST = :COD_CUST'); ADOQuery3.SQL.Add('Group by PCLN.NUM_PO, PCLN.COD_CUST, PCLN.SER_PO'); ADOQuery3.Open; Melody
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-25 23:13:59 IP:220.134.xxx.xxx 未訂閱
1.提供個笨方法,你可在Adoquery1及Adoquery2內各增設一欄位Type為 calculated用以加總各AdoQuery所有金額。 2.就您的問題來看,應當是你填欄位時的錯誤。因為程式碼沒有填值的部份,所以很難看出問題點,仍建議你採除錯方式來作會比較瞭解出錯在那裡。 3.報表建議可利用QRExpr元件來作總加計算或如之前加總用程式方式則以 QRLABEL即可,用法在HELP或站上有類似文章提供,小弟就不幫貼了,請你自行搜尋,以方便您看看站上先進的一些寶貝意見及作法。 ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
melody_chang
一般會員


發表:16
回覆:11
積分:5
註冊:2004-09-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-28 09:42:50 IP:220.130.xxx.xxx 未訂閱
我已經知道問題出在那裡了, 謝謝likush的指導
系統時間:2024-05-12 7:33:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!