1

SQL Server 2008 (SP3) の VS2008 で作成されたレポートがあります。レポートは、場合によっては 3 ~ 4 レベル下にネストされた複数のサブレポートで構成されます。ドキュメント マップは広範囲に使用されるため、Word の目次を後で生成することができます。

ここで問題です。

開発環境で画面にレンダリングするか、Reporting Services サーバーからデプロイされたレポートをレンダリングすると、すべて問題ありません。レポートを任意の形式 (Word、PDF、Excel でテスト済み) でエクスポートすると、出力は期待どおりになります。

ただし、次のようなすべてのパラメーターを含む URL を作成すると、

http://MYSERVERNAME/ReportServer/Pages/ReportViewer.aspx?%2fMYPATH%2fMYREPORTNAME&PARAM1=999&PARAM2=999&PARAM3=999&rs:Command=Render&rs:Format=HTML4.0

これを IE ウィンドウに貼り付けると、出力が正しくありません。それを明確にしましょう。

HTML4.0 表示拡張機能を使用して上記のように表示すると、レポートは期待どおりに画面に表示され、すべてのコンテンツが表示されます。rs:Format パラメーターを Word に変更して Word にレンダリングすると、レポートはレンダリングされますが、最初のページが表示されません (以下のこのコンテンツに関するメモを参照してください)。PDF にレンダリングすると、レポートの同じ部分が表示されません。Excel にレンダリングすると、最初のワークブック シートで生成されたドキュメント マップに、レポートの欠落しているセクションのエントリが表示されますが、クリックすると「無効な参照」エラーが発生し、レポートのその部分が再びレンダリングされません。

より良い用語が必要な場合の「マスター」レポートは、3 つのサブレポートで構成されており、それぞれに他のサブレポートが含まれていることに注意してください。

これは最初のサブレポートの内容であり、最初のページのすべてのショー (1 ページよりも短いため) にのみ発生し、欠落しています。Word ではレンダリングされたものがありますが、幅がページの全幅で高さがわずか数ミリの空のテーブルのように見えます。

画面にレンダリングしてからエクスポートすると、セクションが完全に機能するのにレンダリングされない理由について、私は本当に途方に暮れています。同じレンダリング プロセスを使用すると想定していましたが、よくわかりません。

問題のセクションなどの前に空白のコンテンツを追加して、どこに到達するかを確認しますが、なぜこれが起こるのか、他のレポートでは問題が発生しません (ただし、テストしたのは 3 つまたは 4 つだけです)。または私が書いた何百もの)。私はこれまで URL メソッドをあまり使用していませんでしたが、さまざまなパラメーターを使用して同じレポートを実行し、それぞれの実行に約 2 分かかる 1200 語を超えるドキュメントを生成する ac# アプリケーションを作成していたため、この時点に到達しました。そこでは出力が間違っていたので、手動 URL の作成に戻りましたが、問題はまだ明らかでした。残りは歴史です!

4

1 に答える 1

1

私はついに答えを見つけました。

問題を引き起こしていたサブレポートは、他の子サブレポートに後で渡されるパラメーターを受け取ります。これらをテストしている間、パラメーターに使用可能な値(国のリストとそれに関連するIDなど)を提供するデータセットがありました。

私の通常の作業方法は、パフォーマンスを向上させるため、すべてのサブレポートのパラメーターの入力にのみ使用されるすべてのデータセットを削除することです(たとえば、レポートは国のリストを取得するためにデータベースにクエリを実行する必要はありません)。

ただし、この場合、すべてのデータセットを削除しましたが(それ自体は問題ありませんでした)、データソースはそのままにしておきました(レポートデータペインに表示されます)。

この冗長なエントリを削除すると、レポートは期待どおりにレンダリングされました。

HTML4.0でOKにレンダリングされた理由はまだわかりませんが、他の形式にレンダリングすると、おそらくデータソースを調べ、データがないため(データセットがないため)、何らかのプロセスが進行しているように見えます。その後、レポートはレンダリングされません。それは少し推測ですが、現時点で私にとって理にかなっているのはそれだけです。

于 2012-10-26T12:49:33.843 に答える