2

Report Builder 3.0 を使用して、SharePoint 2010 で使用するレポートを作成しています。SQL Server 2008 R2 は、SharePoint 統合モードの Reporting Services のバックエンドです。レポート ビルダー 3.0 の優れた機能の 1 つは、SharePoint リストをデータ ソースとして使用することです。セットアップは非常に簡単です。SharePoint リストの URL を接続文字列として指定するだけで機能します。

最終的には、このサイトをレポートを含むサイト テンプレートとしてパッケージ化したいと考えています。つまり、URL は絶対ではなく相対である必要があります。たとえば、これの代わりに:

http://mainsite/subsite1/lists/mylist

... 次のように指定する必要があります。

mylist

...これをサイト テンプレートとしてパッケージ化し、そのテンプレートに基づいて新しいサイトを作成すると、レポートは元のサイトのリスト URL を指すのではなく、新しいサイトのリストで機能するようになります。「mylist」、「lists/mylist」などを試しましたが、subsite1/lists/mylist を指定する以外はすべて試しましたが、完全な URL を除いて、これまでのところ何も機能していません。

このサイト テンプレートに基づいて新しいサイトを作成するたびにレポートで接続文字列を手動で変更する必要がないように、相対 URL またはその他の方法を使用することはできますか?

編集: データ ソースの接続文字列に何を入れる必要があるかを誤解していました。リストへのURL ではなく、接続文字列に入るサイトへの URL です。ただし、質問の概念は引き続き有効です。SharePoint リストを指すデータ ソースの接続文字列を動的に設定する必要があります。

4

1 に答える 1

2

何人かの同僚とブレインストーミングした後、私たちはそれを理解しました。重要なのは、接続文字列に式を使用することです。私の元の例を使用して、目標はこれを取得することです:

http://mainsite/subsite1/

... 接続文字列に含まれますが、ハードコードする必要はありません。レポートが存在する場所に基づいて動的に作成し、サイト テンプレートとしてサイトの残りの部分と共にレポートをパッケージ化できるようにします。私が最終的に得た表現は次のとおりです。

=Replace(Globals!ReportFolder, "Reports", "")

レポートは "Reports" というライブラリにあるため、Globals!ReportFolder は次を返します。

http://mainsite/subsite1/Reports

次に、Replace() 関数が文字列の "Reports" 部分を取り出し、その結果が必要な接続文字列になります。

注意事項:

  • レポートの作成中に式をテストすることはできません。そのデータ ソースに基づいてデータセットを作成するときにデザイナーがリストのリストを入力できるように、サイトの URL を接続文字列にハードコーディングする必要がありました。そうしないと、使用可能なリストが表示されず、すべてを手動で入力する必要があります。レポートを設計した後、接続文字列を式に変更し、展開すると機能しました。
  • テストするときは、レポートのタスク バーにある小さな更新アイコンではなく、ブラウザー ビューを更新してください。レポートの組み込みの更新は新しいデータのみを取得するようですが、既に手元にある rdl ファイルを使用しますが、ブラウザを更新すると rdl の最新のコピーと最新のデータが強制的に取得されます。それはおそらく一目瞭然ですが、デザインの変更が何の違いもないように見えたときに、数分間混乱を引き起こしました.
于 2011-04-12T23:05:13.390 に答える