0

WPF Crystal Report Viewerを使用していますが、かなり満足しています。

ただし、サブレポートに問題があります。

サブレポートをリンクする最初の試みは、次のようなものでした。

ReportDocument.Load(Response.ReportsPath + "\\myReport.rpt");
ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";
foreach (var document in ReportDocument.Subreports.OfType<ReportDocument>())
{
    SetDBLogonForReport(ConnectionInfo, document);
    document.Database.Tables[0].Location = "CommonSubreportTable";
}

残念ながら、これは機能しません。

私はいくつかの異なる解決策を試しました。あるブロガーは、メインレポートの前にサブレポートを設定する必要があると提案しました。

だから私はこれを試しました:

ReportDocument.Load(Response.ReportsPath + "\\myReport.rpt");
foreach (var document in ReportDocument.Subreports.OfType<ReportDocument>())
{
    SetDBLogonForReport(ConnectionInfo, document);
    document.Database.Tables[0].Location = "CommonSubreportTable";
}

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";

それでも動作しませんでした。別のブロガーは、DataSetsが進むべき道であると提案しました。

だから、私はそれをしました。

ConnectionInfo.DatabaseName = "MyDatabase.mdb";

foreach (ReportDocument document in ReportDocument.Subreports)
{
    document.SetDataSource(response.Dst);
}
ReportDocument.Database.Tables[0].SetDataSource(response.Dsx.Tables[0]);
ReportDocument.Database.Tables[1].SetDataSource(response.Dsc.Tables[0]);

私はまだパラメータ値の入力を求められています!!! 私は何時間もこれにいました!!! これはこれほど難しいことではありません!!! 誰もが他のアイデアを持っていますか?修正プログラムなど、見落としているものはありますか?

4

1 に答える 1

0

だから私は答えを見つけました...

どうやら、インデックスではなく、テーブル名に基づいてテーブルの場所を設定する必要がありました。

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";

になるはずだった...

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables["Table0"].Location = "Table0";
ReportDocument.Database.Tables["Table1"].Location = "Table1";

これを実行すると、すべてが正しく機能しました。

于 2012-08-25T15:11:10.517 に答える