4

ReportViewer に RDLC レポートを表示する Web ページがあります。メイン レポートの各レコードには、サブレポートがあります。

メイン レポートの各レコードの 3 つのフィールドのデータをパラメーターとしてサブレポートのストアド プロシージャに渡す必要があります。

メインレポートは機能しますが、それはただ言うだけです

エラー: サブレポートを表示できませんでした

両方のレポートですべてのパラメーターが定義されており、localReport_SubreportProcessing イベントを処理しています。

C# コード

    protected void Page_Load(object sender, EventArgs e)
{       
    this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Refs_MainDs", SqlDs_RefsReportsMain));
    this.ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(localReport_SubreportProcessing);
}
void localReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
    e.DataSources.Add(new ReportDataSource("Refs_SubDs", SqlDs_RefsReportsSub));
}

ASP コード

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="800px" Width="100%" Font-Names="Verdana" Font-Size="8pt" BorderColor="#666666" 
    BorderStyle="Solid" BorderWidth="1px" AsyncRendering="False" ShowPrintButton="False" >
<LocalReport ReportPath="Reports\EOD_Refs_MainReport.rdlc" >
    <DataSources>
        <rsweb:ReportDataSource DataSourceId="SqlDs_RefsReportsMain" Name="Refs_DataSource" />
        <rsweb:ReportDataSource DataSourceId="SqlDs_RefsReportsSub" Name="Refs_DataSource" />
    </DataSources>
</LocalReport>                             

<asp:SqlDataSource ID="SqlDs_RefsReportsMain" runat="server" ConnectionString="<%$ ConnectionStrings:AlphaConnectionString %>" 
    SelectCommand="rpt_RefsReport_Main" SelectCommandType="StoredProcedure">
<SelectParameters>
    <asp:QueryStringParameter Name="RefsID" QueryStringField="RefsID" Type="String" />
</SelectParameters>

4

2 に答える 2

2

多分それはあなたを助けるでしょう:メインレポートに基づくサブレポートクエリ

于 2012-10-10T13:33:01.490 に答える
2

レポートごとにデータセットを変更する必要がありましたが、それらはすべて同じデータソースを使用しており、コードで各データセットのパラメーターを設定する必要があります

<rsweb:ReportViewer ID="ReportViewer1" runat="server" AsyncRendering="False" ShowPrintButton="False" >
<LocalReport ReportPath="Reports\Report_MainReport.rdlc" >
    <DataSources>
        <rsweb:ReportDataSource DataSourceId="SqlDs_ReportsMain" Name="EOD_Summary_DataSource" />
        <rsweb:ReportDataSource DataSourceId="SqlDs_ReportsMid" Name="EOD_Summary_DataSource" />
        <rsweb:ReportDataSource DataSourceId="SqlDs_ReportsSusp" Name="EOD_Summary_DataSource" />
        <rsweb:ReportDataSource DataSourceId="SqlDs_ReportsRef" Name="EOD_Summary_DataSource" />
    </DataSources>
</LocalReport>                             

<asp:SqlDataSource ID="SqlDs_ReportsMain" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="rpt_HighLevel" SelectCommandType="StoredProcedure">
<SelectParameters>
    <asp:QueryStringParameter Name="Key" QueryStringField="Key" Type="String" />
</SelectParameters>

など、レポート データ ソースごとに

C#で

protected void Page_Load(object sender, EventArgs e)
{       
    this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("MainLevelDs", SqlDs_ReportsMain));
    this.ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(localReport_SubreportProcessing);
}
void localReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
    e.DataSources.Add(new ReportDataSource("MidLevelDs", SqlDs_ReportsMid));
}

それが正しい方法かどうかはわかりませんが、私にとってはうまくいきます!

HTH

于 2012-11-20T13:47:00.430 に答える