別のレポートを含むサブレポート コントロールを持つバインドされていない 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 番目の場合は、最初と同じようにパラメーターとフィルター文字列を追加しましたが、パラメーターを使用しています。