web-dev-qa-db-ja.com

レポートビューアーが読み込まれず、空白が表示される-ローカルRDLCファイルを実行している

2005バージョンでローカルrdlcファイルを実行すると、レポートサービスに問題が発生しました。

HTMLで、次のようにローカルで実行するように設定されたレポートビューアがあります。

 <rsweb:ReportViewer ID="ReportingServicesReportViewer" runat="server" Height="100%"
            ProcessingMode="Local" ShowParameterPrompts="False" Width="100%">
        </rsweb:ReportViewer>

コードで

// create SqlConnection
        SqlConnection myConnection = new SqlConnection(ConnectionString);
        myCommand.Connection = myConnection;
        SqlDataAdapter da = new SqlDataAdapter(myCommand);

        //get the data
        DataSet data = new DataSet();
        da.Fill(data);

        if (data != null && data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0)
        {
            ReportingServicesReportViewer.Visible = true;
            ltrStatus.Text = string.Empty;

            //provide local report information to viewer
            ReportingServicesReportViewer.LocalReport.ReportPath = Server.MapPath(Report.RDLCPath);

            //bind the report attributes and data to the reportviewer
            ReportDataSource rds = new ReportDataSource("DataSet1", data.Tables[0]);
            ReportingServicesReportViewer.LocalReport.DataSources.Clear();
            ReportingServicesReportViewer.LocalReport.DataSources.Add(rds);
            ReportingServicesReportViewer.LocalReport.Refresh();
        }
        else
        {
            ReportingServicesReportViewer.Visible = false;
            ltrStatus.Text = "No data to display.";
        }

レポートビューアーにレポートの結果を設定するメソッドを実行すると、レポートビューアーが存在しないかのように何も起こりません。

私が今までにトラブルシューティングするために行ったこと:

  • イベントビューアでエラーを確認したところ、これが唯一の関連するものでした。[ドメイン]\sp_dbadmin理由:明示的に指定されたデータベースを開けませんでした。 。ただし、接続しているユーザーはsysadminです。私はそれをチェックしました、そして私がsys.server_role_membersをチェックしたので確信しています
  • ログインしたユーザーになりすまそうとしたが、役に立たなかった
  • Sysadmin権限を持つ特定のユーザーを作成し、すべてのアクセス権をIISおよびSQL Server 2008の両方から付与しました。

誰かがこれに似た問題に遭遇しましたか?

10
Mez

単純なレポートを使用してみてください。レポートビューアが無効なRDLCが原因で例外をスローし、空のレポートが表示されることがあります。

また、プロジェクトをデバッグしてVisual Studioの出力ウィンドウを確認してみてください。RDLエンジンに対して警告が表示されます。エラーの原因を調査すると役立つ場合があります。

8
Matteo Conta

VS2012で同じ問題が発生しました。レポートにロードイメージが表示され、ロードが完了した後、レポートが空白になります。データは存在しますが、レンダリングされません。

解決策:ReportAsyncRenderingをFalseに変更するだけで、レポートは再び正常に機能します。

9
Beyhan

Rdlcにパラメーターを追加しても、割り当てないときに同じ問題が発生しました。このコードを追加して解決しました。

Dim p_Date As Microsoft.Reporting.WebForms.ReportParameter
p_Date = New Microsoft.Reporting.WebForms.ReportParameter("DATE", txtDate.Text)
    Me.ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WebForms.ReportParameter() {p_Date})
    ReportViewer1.LocalReport.Refresh()
7
user3567457

私の場合、ReportViewerコントロールはエラーメッセージ(EventViewerまたはReportViewerコントロールの本体)を提供せず、空白ページのみを提供します。これは問題を見つけて修正するのを難しくしていると思います。 Yoel Halbの答えが私の鍵でした!

IsReadyForRenderingというプロパティがFalseでした。 BOL内 はパラメータートピックを参照します。

コードを使用してパラメーター全体のすべての値を検査できます(イミディエイトウィンドウから実行できます)

   var parameters = ReportViewer1.LocalReport.GetParameters()

「MissingValidValue」という値を持つプロパティStateを調べると、問題のあるパラメータが見つかります。

お役に立てれば !

3
Fer R

私は同じ問題を抱えていましたが、私の場合、実際にレポートが予期していたオブジェクトタイプではないデータセットを提供したことがわかりました。

私の状況では、レポートはビジネスオブジェクトを想定していましたが、SQLデータソースを提供しました。

レポートにnullまたは空白にすることは許可されていないが、パラメーター値が指定されていないパラメーターがある場合にも、この同じ問題が発生しました。

また、コードでデータソースを設定するには、page_loadイベントではなく、onloadイベントで行う必要があります。

3
yoel halb

これは理解するのに少し時間がかかったので、うまくいけば、これらのチェックで時間を節約できるでしょう:

1)web.configを確認します

<system.web>
  <httpHandlers>
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
  </httpHandlers>

  <buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 </buildProviders>
</system.web>

<system.webServer>
  <handlers>
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </handlers>
<system.webServer>

2)構成をコードに移動する前に、レポートビューアーコントロールをデザインビューで直接試してください。

ハードコードされたレポートビューアーコントロール

3)スクリプトマネージャーがレポートビューアーの前のページにあることを確認します。

4)レポートがローカルまたはSSRSサーバーのいずれかでデザインビューアーの外部で実行されることを確認します。

5)レポートがすべてのパラメータに対してデフォルト値を持っていることを確認してください!パラメータが必要で、デフォルト値がないレポートは空白で表示されます。

2
user1479008

用紙のサイズを変更した後、またはreportviewerが機能しない場合は、遅延を追加して私の解決策を試すことができます

WaitControlDisplayAfter

データが大きすぎて非同期で処理できない場合がある

私の場合、犯人はAllow null値= false(チェックされていない)のパラメータを持っていました...理由を聞かれません。

1

私は同様の問題を理解するために何日も費やしてきました。多分これは誰かを助けることができるでしょう。私はstackoverflowでほとんどすべてのスレッドを読みましたが、ここのコメントを読んでこれを試してみました。私の場合、最初の2行(パラメーター行とパラメーターを非表示にするオプションのある行)が表示されましたが、管理ボタンとレポート自体を含む行は空でした。 View reportはアクションを起こしませんでした。

preview of auto generated HTMLweb page

私がやったことは、それらを提供せずにパラメータを持つレポートをロードすることでした-私はユーザーにそれらを記入してもらいたいと思っていました-Page_Load

protected void Page_Load( object sender, EventArgs e )
{
    this.LoadReport();
}

private void LoadReport()
{
        // retrieve path param from "Reports/{path}" URL
        string reportPath = Request.QueryString[ "path" ] as string;
        string reportServerUrl = System.Configuration.ConfigurationManager.AppSettings[ "ReportServerUrl" ];

        this.MainReport.ProcessingMode = ProcessingMode.Remote;
        this.MainReport.ServerReport.ReportServerUrl = new Uri( reportServerUrl );
        this.MainReport.ServerReport.ReportPath = reportPath;
        this.MainReport.ServerReport.Refresh();
}

変更後Page_Load以下に示すコードはすべて正常に動作します。

protected void Page_Load( object sender, EventArgs e )
{
    if ( !this.IsPostBack )
        this.LoadReport();
}
0
Ryfcia

同じ問題がありました。しばらく時間がかかりましたが、私が誤ってreportViewerコントロールを自分で新しくしたため、フォームをデザインしたときにVisual Studio Designerが作成したものを失ったため、reportviewerコントロールが空白のままでした- Visual Studio DesignerのReportViewerオブジェクトにプロパティを設定したことはありません。

愚かな間違いですが、理解するのにかなりの時間がかかりました。

0
Denis