[Quick Report]只會印出同一筆資料 |
答題得分者是:StrongLemon
|
清心綠茶
一般會員 發表:4 回覆:4 積分:1 註冊:2004-11-23 發送簡訊給我 |
如題
由於以後程式的dataset會是動態產生的
所以小弟參考前人所寫的程式然後稍做修改一下
但是卻只能印出同一筆資料
請問是哪裡出問題了?
希望有大大可以幫我解決我的問題
感激不盡 執行環境:
Windows XP
Delphi 7
Access 2000 程式小弟已經上傳了,請參考下面連結
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=64070
|
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
您好:我修改的部分(紅字)
procedure Tform2.PreparePrint; var i,j,ColWidth :Integer; begin mydataset.Open; mydataset.First; j:=0; while not mydataset.Eof do begin with myDBGrid do begin NowRightEnd :=0; for i := 0 to FieldCount-1 do begin if Columns.Items[i].Width > 15 then begin InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,50,j); //InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,Columns.Items[i].Width); end; end; end; inc(j); mydataset.Next; Break; end; mydataset.First; QuickRep1.DataSet:=mydataset; TempColumnStr := 'NO_MEAN'; // only give a init value qrlTitle1.Caption := myTitle1; qrSTitleLine.Width := qrlTitle1.Width; qrlTitle2.Caption := myTitle2; end; |
清心綠茶
一般會員 發表:4 回覆:4 積分:1 註冊:2004-11-23 發送簡訊給我 |
引言: 您好:我修改的部分(紅字)大大真是太感謝你囉< > 問題已經解決嚕~~ 不過可以告訴我是因為什麼原因嗎?再次謝謝你< >procedure Tform2.PreparePrint; var i,j,ColWidth :Integer; begin mydataset.Open; mydataset.First; j:=0; while not mydataset.Eof do begin with myDBGrid do begin NowRightEnd :=0; for i := 0 to FieldCount-1 do begin if Columns.Items[i].Width > 15 then begin InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,50,j); //InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,Columns.Items[i].Width); end; end; end; inc(j); mydataset.Next; Break; end; mydataset.First; QuickRep1.DataSet:=mydataset; TempColumnStr := 'NO_MEAN'; // only give a init value qrlTitle1.Caption := myTitle1; qrSTitleLine.Width := qrlTitle1.Width; qrlTitle2.Caption := myTitle2; end; |
StrongLemon
高階會員 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
QuickReport主要有兩種Band,Detail Band跟SubDetail Band。
Band的概念就像是Table的Record或者是DBGrid的Row一樣。
Detail Band->Master Table
SubDetail Band->Detail Table 所以這行QuickRep1.DataSet:=mydataset;
你可以想成在一個在Form上Master Table是mydataset。
while not mydataset.Eof do begin with myDBGrid do begin NowRightEnd :=0; for i := 0 to FieldCount-1 do begin if Columns.Items[i].Width > 15 then begin InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,50,j); //InsertCol(Columns.Items[i].Title.Caption,Columns.Items[i].FieldName,Columns.Items[i].Width); end; end; end; inc(j); mydataset.Next; Break; end;這段Code會跑迴圈在這個Band中塞入多個Column,但你塞的Column又是DBText, 如果你想要在一個Band中就可以看到所有資料才需要這樣跑迴圈, 另外還要得自動調整高度,還有在資料欄位也是要塞Label,然後在Label中填入 資料,AqrDBText換成AqrLabel,AqrLabel.Caption中放資料。 因為不明確你到底想做的是哪個,所以我先改成以Band運作方式,因此這邊就多加Break就夠了。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |