Подотчеты Crystal Report не связаны с моим основным отчетом

Я использую средство просмотра отчетов 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";

Все еще не работает. Другой блогер предположил, что лучше всего использовать наборы данных.

Итак, я сделал это.

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]);

У меня все еще запрашиваются значения параметров!!! Я был в этом для ЧАСОВ!!! Это НЕ должно быть ТЯЖЕЛО!!! У кого-нибудь есть другие идеи??? Есть ли исправление или что-то, что я пропустил?


person Joe    schedule 10.08.2012    source источник


Ответы (1)


Так я понял ответ...

По-видимому, мне пришлось установить местоположение таблицы на основе имени таблицы, а не индекса.

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";

Как только я это сделал, все заработало правильно.

person Joe    schedule 25.08.2012