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

[Quick Report]只會印出同一筆資料

答題得分者是:StrongLemon
清心綠茶
一般會員


發表:4
回覆:4
積分:1
註冊:2004-11-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-24 13:11:38 IP:61.222.xxx.xxx 未訂閱
如題 由於以後程式的dataset會是動態產生的 所以小弟參考前人所寫的程式然後稍做修改一下 但是卻只能印出同一筆資料 請問是哪裡出問題了? 希望有大大可以幫我解決我的問題 感激不盡    執行環境: Windows XP Delphi 7 Access 2000    程式小弟已經上傳了,請參考下面連結 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=64070
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-24 13:47:20 IP:221.169.xxx.xxx 未訂閱
您好:我修改的部分(紅字)    
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-24 15:15:39 IP:61.222.xxx.xxx 未訂閱
引言: 您好:我修改的部分(紅字)
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-24 20:07:58 IP:221.169.xxx.xxx 未訂閱
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就夠了。
系統時間:2024-04-29 13:05:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!