0

通常実行すると正しいデータが返されるというレポートがありますが、レポート実行サービスを介して実行すると、レポートにデータが含まれていません。フィルタリングするIDを含むパラメーターを渡し、レポートのラベルを使用して、レポートが送信されていることを検証できます。

ExecutionLogStorageテーブルを見ると、レポートがrsSuccessのステータスで実行されていることがわかりますが、RowCountは0です。イベントログまたはレポートサーバーログにエラーはありません。

以下は、レポートをPDFに報告するために使用する方法です。

    public byte[] Render( ReportRequest rptRequest )
    {
        ReportExecutionService rs = new ReportExecutionService();

        rs.Credentials = CredentialCache.DefaultCredentials;
        rs.Url = rptRequest.ReportExecutionServerEndPoint;

        string reportPath = string.Format(
            "/{0}/{1}",
            rptRequest.ReportDataBaseName,
            rptRequest.ReportName );

        string format = "PDF";

        string historyID = null;
        string devInfo =
            @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";

        string encoding;
        string mimeType;
        string extension;
        Warning[] warnings;
        string[] streamIDs;

        ExecutionHeader execHeader = new ExecutionHeader();

        rs.ExecutionHeaderValue = execHeader;
        rs.LoadReport( reportPath, historyID );

        rs.SetExecutionParameters( rptRequest.ReportParameters, "en-us" );

        return rs.Render(
            format,
            devInfo,
            out extension,
            out encoding,
            out mimeType,
            out warnings,
            out streamIDs );
    }
4

1 に答える 1

1

デプロイされたとき、コードは別のユーザーアカウントで実行されていたことがわかりました。そのアカウントには、データを読み取る権限がありませんでした。

于 2013-01-10T13:31:26.207 に答える