2012-02-29 9 views
0

私は怒りの報告に新しいです。バンドを使用して私のデータを意識したレイブレポートを作成しましたが、今はコードからレポートにパラメータを送信することによってカスタネットレポートを作成する必要があります。Delphi Rave Report 7.7.0 canレポートを使用して複数の行を作成できますか?

私のテキストブックの例では、これを行ったレポートのパラメータを作成し、ページデザイナーの各列に配置する必要があると言いました。私のテキストブックに記載されているように、テストのために、私は唯一の最初のカラム値Param.Group1を埋めるために望んでいたので、私は

// Loop at groups; 
    rvpgrouprep.SelectReport('grouprep',False); 
    rvpgrouprep.open; 

    while cdsgrouprep.eof = False do 
    begin 
     group := cdsgrouprep.FindField('GroupName').AsString; 
     rvpgrouprep.SetParam('Group1',group); 
     cdsgrouprep.MoveBy(1); 
    end; 

    rvpgrouprep.Execute; 
    rvpgrouprep.Close; 

は、だから私の教科書の例は、このコラム内のグループのリストを提供すべきであることを示し、次のコードを使用しましたparam.group1は私のreprtにありますが、このコードはレポートに1行しか表示せず、最後のエントリです。 whileループが動作し、私はそれをデバッグしました。何か不足していますか?

助けが必要です。

+0

あなたは 'cdsGroupRep'(?データセット)throgh反復されています。 'Next/MoveBy'のようなものを' rvpGroupRep'でも作る必要がありますか?同じレポート行にある同じパラメータを設定しようとしているようです。 – teran

+0

私はトラストcdsGroupRep(クライアントデータセット)を繰り返しています。私はそれを次の行に移すべきだと私は同感だが、私は教科書やインターネット上で次の/ moveby/newlineのためのメソッドを見つけられなかった。 – Overklog

+0

は、通常、ジェネレータにはData-Bandsのようなものがあり、データセット(またはclientDataSet)に割り当てることができます。 http://gp.embarcadero.com/authors/edit/1784.aspxまた、このマニュアルはhttp://www.bio-work.de/hilfe/bioorderdesk/006/rave5にあります。 .pdf(RaveReports 5)、それはむしろ古いです – teran

答えて

2

Raveはここで設計されたとおりに動作します。パラメータは、行を変更するたびに行を生成しません。

変数cdsgrouprepがクライアント・データ・セット・ベースのグループであることを誰にも知らせなかったので、データセットに4つの行があり、バンドがある場合、レポート内にバンドの4つのコピーを生成するために、raveのバンド化されたレポート生成コードが当然期待されます。しかし、それに頼るのではなく、おそらくあなたが探しているのは、コードから完全に行を生成するものです。そのために、パラメータはまったく必要ありません。パラメータは便利ですが、ここで必要とされるものではありません。

は純粋なコードベースのRaveレポートは、EDNの記事でshown hereであり、次のようになります。

procedure TFormMain.PrintTabularReport(Report: TBaseReport); 
var 
    FolderList : TStringList; 
    i   : Integer; 
    NumFiles : Cardinal; 
    NumFolders : Cardinal; 
    SizeFiles : Cardinal; 
    Root  : string; 
begin 
    with Report do 
    begin 
    SetFont('Arial', 15); 
    NewLine; 
    PrintCenter('List of Folders in the Drive Root', 4); 
    NewLine; 
    NewLine; 
    ClearTabs; 
    SetTab(0.2, pjLeft, 1.7, 0, 0, 0); 
    SetTab(1.7, pjRight, 3.1, 0, 0, 0); 
    SetTab(3.1, pjRight, 3.5, 0, 0, 0); 
    SetTab(3.5, pjRight, 4.5, 0, 0, 0); 
    SetFont('Arial', 10); 
    Bold := True; 
    PrintTab('Folder Name'); 
    PrintTab('Number of Files'); 
    PrintTab('Number of Folders'); 
    PrintTab('Size of Files'); 
    Bold := False; 
    NewLine; 
    FolderList := TStringList.Create; 
    try 
     Root := IncludeTrailingPathDelimiter(ExtractFileDrive(ParamStr(0))); 
     EnumFolders(FolderList, Root); 
     for i := 0 to FolderList.Count - 1 do 
     begin 
     PrintTab(FolderList[i]); 
     GetFolderInfo(IncludeTrailingPathDelimiter(Root+FolderList[i]), 
      NumFiles, NumFolders, SizeFiles); 
     PrintTab(Format('%u',[NumFiles])); 
     PrintTab(Format('%u',[NumFolders])); 
     PrintTab(Format('%u bytes',[SizeFiles])); 
     NewLine; 
     end; 
    finally 
     FolderList.Free; 
    end; 
    end; 
+0

ウォーレンP.ありがとうありがとう私はこの純粋なコードベースのレーブレポートをaccroseこれはまた、私はちょうどレポートdeignerとテキストブックで何かを見逃していたことを期待していたが、私の望む結果を達成する唯一の方法です。 – Overklog

関連する問題