報表格式問題 |
尚未結案
|
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
我再補充說明一下 我在程式中有設定Group by 專案代號,訂單編號,內部料號,出貨日,出貨單號,訂單數量
我知道若不顯示出貨日 & 出貨單號, 則相同料號只會出現一筆,
就不會有訂單數量重覆的問題,
但User要求一定要顯示出貨日 & 出貨單號,
這樣用DBGrid顯示時, 就會訂單數量重覆 bestlong大哥, 您提到M/D 架構, 但我不知道如何做,
可否再說清楚一點? 我想這種顯示的技巧, 應該在報表工具上比較可能實現,
但不知Fast Report上該如何做? Melody
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
這裡我沒說清楚, 我所說的 Group 的功能是在報表中的處理.
並不是指 SQL 語法的部份. 我覺得基本上你所下的 SQL 本來就會在每一筆紀錄出現訂單數量的欄位.
訂單明細一筆Item 可分批出貨, 這樣就是一對多的狀況, 所以在這裡把訂單數量欄位作合計可以說是錯誤的計算處理. 而且看起來你的處理應該是只有用一個 TQuery 來結合資料. 這樣直接配合報表時就要用報表系統的 Group 功能. 而 M/D 結構就是用 qryMaster 取訂單明細, qryDetail 連接出貨單明細,兩者用出貨單編號做關聯, 在來就接上報表同樣作 M/D 處理. 而關於 Fast Report 的使用, 在安裝的目錄下應該有一個 Demos 目錄內有很多的程式可以參考, 再你的 Delphi 安裝好後, 可以開啟其中的reports 目錄範例. 其中的 Nested groups 或是 Master-Detail-Subdetail 應該就可以解決你的問題. 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
|
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
我試過 bestlong所教的方法, 設定兩個Query,
ADOQuery1 取訂單明細, ADOQuery2 連接出貨單明細,兩者用訂單編號做關聯,
在報表上, MasterData Band抓ADOQuery1, DetailData Band抓ADOQuery2,
結果, 很糟啦~~~
Ex. 該筆訂單有5個項次,只有其中一筆分兩次出貨, 但結果出現一筆項次會對應到所有出貨數量,
訂單 項次 訂單數量 出貨數量
AAA 001 1
1
2
8......
AAA 002 2
1
2
8......
這不是我要的啊......請問該如何解啊? 後來, 我想到一個方法, 只用一個Query, 這樣訂單數量會重覆出現,
我只要設定每次在印訂單數量前, 先去判斷, 若訂單編號&訂單項次都相同,
則該欄位就不要顯示, 這樣問題就可以解決了,
但又衍生出另一個問題, 我不知該如何判斷啊?
是在MasterData Band的(OnBeforePrint)嗎?
還是在訂單數量按右鍵, Edit中設定呢? 各位高手們, 救救我啊~~~
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 我試過 bestlong所教的方法, 設定兩個Query, ADOQuery1 取訂單明細, ADOQuery2 連接出貨單明細,兩者用訂單編號做關聯, 在報表上, MasterData Band抓ADOQuery1, DetailData Band抓ADOQuery2, 結果, 很糟啦~~~ Ex. 該筆訂單有5個項次,只有其中一筆分兩次出貨, 但結果出現一筆項次會對應到所有出貨數量,應該是 DetailData Band抓ADOQuery2 的 SQL 你沒有處理好. ADOQuery2.SQL := 'select 訂單 項次 訂單數量 from 訂單明細'; ADOQuery2.SQL := 'select 出貨數量 from 出貨明細 where 訂單編號 = :訂單'; 其中的 訂單就是關聯欄位. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
我在ADOQuery2的SQL有設定關聯, 但不Work,
當ADOQuery2的Active設定為True時,
會出現錯誤訊息, "提供不一致或不完全的資訊導致參數物件不適當地被拒"
但我實在查不出那裡有錯, 請各位高手幫幫忙啊~~~~ 我在ADOQuery1設定連接訂單明細
SELECT DISTINCT POLN.COD_CUST as COD_CUST
, POLN.NUM_PO as NUM_PO
, POLN.NUM_LINE as NUM_LINE
, POLN.COD_ITEM as COD_ITEM
, POLN.QTY_REQ as 訂單數量
FROM MF2000.POLN 在ADOQuery2設定連接出貨明細
SELECT DELD.QTY_PRPA as 出貨量
FROM MF2000.DELD
WHERE DELD.NUM_CUST =: COD_CUST
and DELD.NUM_PO =: NUM_PO
and DELD.LIN_PO =: NUM_LINE 這兩個Table是用3個欄位來關聯,
我是設定 出貨明細的欄位 =: 訂單明細的欄位
還有那裡漏掉了嗎? 請各位高手幫幫忙啊~~~~
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 我在ADOQuery2的SQL有設定關聯, 但不Work, 當ADOQuery2的Active設定為True時, 會出現錯誤訊息, "提供不一致或不完全的資訊導致參數物件不適當地被拒" 但我實在查不出那裡有錯, 請各位高手幫幫忙啊~~~~ 我在ADOQuery1設定連接訂單明細 SELECT DISTINCT POLN.COD_CUST as COD_CUST , POLN.NUM_PO as NUM_PO , POLN.NUM_LINE as NUM_LINE , POLN.COD_ITEM as COD_ITEM , POLN.QTY_REQ as 訂單數量 FROM MF2000.POLN 在ADOQuery2設定連接出貨明細 SELECT DELD.QTY_PRPA as 出貨量 FROM MF2000.DELD WHERE DELD.NUM_CUST =: COD_CUST and DELD.NUM_PO =: NUM_PO and DELD.LIN_PO =: NUM_LINE 這兩個Table是用3個欄位來關聯, 我是設定 出貨明細的欄位 =: 訂單明細的欄位 還有那裡漏掉了嗎? 請各位高手幫幫忙啊~~~~ >>< face="Verdana, Arial, Helvetica"> 建議手動處理動態參數procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet); begin ADOQuery2.Open; end; procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet); begin ADOQuery2.Close; ADOQuery2.Open; end; procedure TForm1.ADOQuery2BeforeOpen(DataSet: TDataSet); begin ADOQuery2.Parameters.ParamByName('COD_CUST').Value := ADOQuery1.FieldByName('COD_CUST').AsString; ADOQuery2.Parameters.ParamByName('NUM_PO').Value := ADOQuery1.FieldByName('NUM_PO').AsString; ADOQuery2.Parameters.ParamByName('NUM_LINE').Value := ADOQuery1.FieldByName('NUM_LINE').AsString; end;雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
哇~~真是高明啊~~~
這樣我用DBGrid時, 就可以做到Master/Detail的關聯了,
bestlong前輩, 真是感謝您的鼎力相助~~ 但我最終目的是要在FastReport上設計Report,
當ADOQuery2的Active設定為True時,
會出現錯誤訊息, "提供不一致或不完全的資訊導致參數物件不適當地被拒"
這樣我就無法拉出欄位, 請問該如何解? 還有啊, 我的資料庫是用Oracle,
難道在Oracle下用ADOQuery建Master/Detail, 是不允許的嗎?
我有換成系統預設的資料庫來測試, 都可以work啊, 真的很奇怪耶~~~~ Melody
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 當ADOQuery2的Active設定為True時, 會出現錯誤訊息, "提供不一致或不完全的資訊導致參數物件不適當地被拒"FastReport 會在設計時期預設是開啟所連接的 DataSet. 而這段錯誤訊息實際上就是 ADOQuery2 的 Parameters 沒有設定就將其 Active 所造成. 所以在 ADOQuery2.SQL 在語法上可以先不要加入動態參數部份, 改移到 FormCreate 時再作 ADOQuery2.SQL.Add('where 條件欄位 = :動態參數'); 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 還有啊, 我的資料庫是用Oracle, 難道在Oracle下用ADOQuery建Master/Detail, 是不允許的嗎? 我有換成系統預設的資料庫來測試, 都可以work啊, 真的很奇怪耶~~~~我本身尚未使用 ADO 連接 Oracle 的經驗, 不過建議先以一個關聯欄位來測試看看. 另外 Parameters 本身也有資料型態的要求也要注意一下. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
melody_chang
一般會員 發表:16 回覆:11 積分:5 註冊:2004-09-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |