3

別のレポートを含むサブレポート コントロールを持つバインドされていない XtraReport があります。スキーマを使用したフィールドの定義を持ち、実際にはどの DataSet にもバインドされていないレポートに対して「バインド解除」を呼び出します。データ アクセス レイヤーを使用して DataTable を作成し、そのオブジェクトをレポートの DataSource プロパティに渡します。

だから、私は次のコードを持っています:

        // (...) Get the data from the db and fill a DataTable

        if (table.Rows.Count > 0)
        {
            report.DataSource = table;

            // (...) Get the data from the db and fill a DataTable for the subreport
            report.SubPurchaseOrder.Report.DataSource = tableSubReport;

            report.ShowPreviewDialog();
        }
        else
        {
            MessageBox.Show("No data to show.");
        }

しかし、このアプローチを使用して得られるのは、サブレポートが非常に奇妙に印刷されることです (添付の pdfを見てください。スペイン語で申し訳ありませんが、理解できると思います)。

DevExpress のドキュメントを読みましたが、アプローチが正しくない可能性があります。そのため、1 つ以上のサブレポートを含むレポートを作成する方法について質問しますが、外部のプロセスを使用してそれらを埋めるためのデータを提供する必要があります。データアクセス層などのレポート?

質問が正しく記載されていないか、詳細情報が不足している場合はお知らせください。

編集:

ここに問題のあるレポートを含むサンプル プロジェクトをアップロードしました。

ある種のパラメーターを使用しようとしました。サブレポート コントロールの BeforePrint イベントで、次のことを試しました。

((XRSubreport)sender).ReportSource.FilterString = "[IdPO_RO] = " + _idPurchaseOrder;

((XRSubreport)sender).ReportSource.Parameters["Id"].Value = _idPurchaseOrder;

もちろん、2 番目の場合は、最初と同じようにパラメーターとフィルター文字列を追加しましたが、パラメーターを使用しています。

4

1 に答える 1

3

問題を解決できました。

これの原因は、間違ったオブジェクトに割り当てていたことです。この行:

report.SubPurchaseOrder.Report.DataSource = tableSubReport;

次のようにする必要があります。

report.SubPurchaseOrder.ReportSource.DataSource = tableSubReport;

簡単に説明すると、別のプロパティを使用して、サブレポート コントロール (XRSubreport) に含まれるレポートを参照していたということです。

于 2009-09-30T18:17:57.833 に答える