Quick Report大困擾 |
尚未結案
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
各位前輩 小弟使用一個TQuery來做報表
如果光只是SELECT 單一Table那就沒問題. 如果用TQuery來SELECT兩個Table以上的資料我就不知要如何來用報表
來表達出來
Ex.報表應該表示成
代號 , 名稱 ,OrdNo
==========================
00001 , AA ,200040426001
200040426002
200040426005
00002 , BB ,200040426003
200040426004 請各位前輩賜教 另外我可以在程式執行是對報表下Query條件嗎?
要如何去做? 請各位前輩幫忙 Thank You
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 小弟使用一個TQuery來做報表 如果光只是SELECT 單一Table那就沒問題. 如果用TQuery來SELECT兩個Table以上的資料我就不知要如何來用報表 來表達出來 Ex.報表應該表示成 代號 , 名稱 ,OrdNo ========================== 00001 , AA ,200040426001 200040426002 200040426005 00002 , BB ,200040426003 200040426004您Select單一Table作報表沒有問題,那用TQuery來Select兩個Table就用Join的方式即可,例: Select T1.Field1, T2.Field2 From Table1 T1, Table2 T2 Where T1.KeyField = T2.KeyField 引言: 另外我可以在程式執行是對報表下Query條件嗎? 要如何去做?當然可以,您可以使用:
------
~小弟淺見,參考看看~ |
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: 各位前輩 小弟使用一個TQuery來做報表 如果光只是SELECT 單一Table那就沒問題. 如果用TQuery來SELECT兩個Table以上的資料我就不知要如何來用報表 來表達出來 Ex.報表應該表示成代號 , 名稱 ,OrdNo ========================== 00001 , AA ,200040426001 200040426002 200040426005 00002 , BB ,200040426003 200040426004請各位前輩賜教 另外我可以在程式執行是對報表下Query條件嗎? 要如何去做? 請各位前輩幫忙 Thank You 以上紅色部份是你報表呈現結果,提供以下步驟參考 假設產品TABLE為PART,訂單TABLE為ORD 欄位 代號為PARTNO ,名稱為PARTNAME , ORDNO為訂單號 1.在Query.SQL之SQL語法 SELECT A.PARTNO,A.PARTNAME,B.ORDNO FROM PART A LEFT JOIN ORD B ON B.PARTNO=A.PARTNO WHERE 條件式 ORDER BY A.PARTNO 2.執行後所得資料為 00001 , AA ,200040426001 00001 , AA ,200040426002 00001 , AA ,200040426005 00002 , BB ,200040426003 00002 , BB ,200040426004 3.報表如何把上述紅色部份資料不列印 假設 QrDBText1.DataSet:=Query; QrDbText1.DataField:='PARTNO'; QrDBText2.DataSet:=Query; QrDbText1.DataField:='PARTNAME'; QrDBText3.DataSet:=Query; QrDbText1.DataField:='ORDNO'; QuickRep.DataSet:=Query; 在報表FORM設一公用變數以控制紅色資料是否列印 var mpartno:String; 在RepForm.Create內 mpartno:=''; 在RepForm.Detail1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);內 if Query.FieldByName('PARTNO').AsString=mpartno then begin QrDbText1.Enabled:=False; //不列印 QrDbText2.Enabled:=False; // end else begin QrDbText1.Enabled:=True; //列印,同代號第一筆 QrDbText2.Enabled:=True; mpartno:=Query.FieldByName('PARTNO').AsString; end;發表人 - cmj 於 2003/04/27 01:29:09 |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
前面二位的都滿詳細了,我提供一個我自己的做法,僅供參考...
在DetailBand放二個QRLabel,QRLabel1->代號,QRLabel2->名稱...
var OLD_NO,NEW_NO:string;//全域變數 Implementation . . Procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep; Var PrintReport: Boolean); Begin OLD_NO:= ''; NEW_NO:= ''; End; procedure TForm2.QRBand5BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);//QRBand5是DetailBand begin NEW_NO:=Query1.FieldByName('NO').Vlaue; if NEW_NO = OLD_NO then begin QRLabel1.Caption:=''; QRLabel2.Caption:=''; end else begin QRLabel1.Caption:=Query1.FieldByName('NO').Vlaue; QRLabel2.Caption:=Query1.FieldByName('NAME').Vlaue; OLD_NO:=NEW_NO; end; end;TRY TRY SEE 發表人 - chih 於 2003/04/28 14:32:13 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |