0

レポート サーバー上のレポートに RDCE を使用しています。レポートを機能させるには、"UsedInQuery" パラメータを true に設定する必要があります。デフォルトでは false です。ただし、これは設計時に設定できるパラメータではありません。パラメータは、デプロイ後に手動で構成する必要があります。

これを行う理由の 1 つは、最初にレポートを見つけて、レポート サーバー データベース ディレクトリを操作することです。

select ItemID
      ,Path,Name,Description
      ,cast(Property as xml) as Property
      ,cast(Parameter as xml) as Parameter
  from dbo.Catalog
 where name like 'list of databases%'

次に、変更されたパラメーター値でレポートパラメーターを更新します

update Catalog
   set Parameter='
<Parameters>
  <UserProfileState>0</UserProfileState>
  <Parameter>
    ...
    <UsedInQuery>True</UsedInQuery>
    ...
  </Parameter>
</Parameters>'
 where ItemID='someID'

これですべてがうまく機能しますが、毎回そのようにデータベースを操作しなければならないのは良くありません。そのため、レポーティング サービスの Web サービスで何ができるかを調べています。

私の質問は、データベースを直接操作する以外の方法でレポート パラメータを変更することは可能ですか? できれば、Reporting Services から提供される Web サービスを使用します。

私が見つけたのは、この方法が私が望むものに近いということです:

SetItemParameters(path, parameters)

http://msdn.microsoft.com/en-us/library/reportservice2010.reportingservice2010.setitemparameters.aspx

基本的に、上記のメソッドは、 UsedInQuery パラメータを設定できる場合に必要なことを実行します。しかし、上記の行でパラメーターを変更しようとすると、何も変更されません。ここで何が間違っているのかわかりません。

これが私のコードの一部です。Borland C++ で書かれていることに注意してください。

      NS_ReportService2010::ItemParameter *itemPar = new NS_ReportService2010::ItemParameter();
      itemPar->Name = "language";
      itemPar->QueryParameter = System::True;
//      itemPar->AllowBlank = true;


      NS_ReportService2010::ArrayOfItemParameter *itemParameters = new NS_ReportService2010::ArrayOfItemParameter();
      itemParameters->set_length(1);
      itemParameters->operator [](0) = itemPar;

      ReportingService->SetItemParameters("/myreport", *itemParameters);

アップデートで何か間違ったことをしていますか?

編集:

Ron5504 の返信の後、ログ ファイルを調べたところ、次のようになりました。

runningrequests!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: SoapAction: "http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/SetItemParameters"
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Constructed Stream Factory 'StreamFactory:19aa4462-dc7a-4a19-a505-1d0a96ce7fc4' of type 'Microsoft.ReportingServices.Library.MemoryThenFileStreamFactory'
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to GetItemTypeAction(/TestReport).
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to GetItemTypeAction completed. Returns 2.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to SetReportParametersAction(/TestReport).
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Transaction begin.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: i INFO: Call to SetReportParametersAction completed.
library!ReportServer_0-2!6b4!07/30/2013-13:57:39:: v VERBOSE: Transaction commit.
rshost!rshost!6b4!07/30/2013-13:57:39:: v VERBOSE: HttpPipelineCallback::EndOfRequest(): continue pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:39:: v VERBOSE: ThreadContinuePipeline: processing request on pipeline=0x00000002781A5AF0, state=2, IOError=0, node=0.
rshost!rshost!828!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::DisconnectCallback: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: ThreadContinuePipeline: processing request on pipeline=0x00000002781A5AF0, state=0, IOError=2250, node=0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: State machine disconnected pipeline=0x00000002781A5AF0, state=4 ...
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::DoStateDisconnected: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: HttpPipeline::ReleaseOnce: releasing pipeline=0x00000002781A5AF0.
rshost!rshost!b5c!07/30/2013-13:57:43:: v VERBOSE: Destroying pipeline=0x00000002781A5AF0, callback=0x0000000278138720 ...
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Starting database version check timer.
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Verifying DB version.
library!WindowsService_0!224!07/30/2013-13:57:46:: v VERBOSE: Database version check timer executed.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Starting database version check timer.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Verifying DB version.
library!WindowsService_0!122c!07/30/2013-13:58:46:: v VERBOSE: Database version check timer executed.

さらに、デザイナーモードでそれを行う方法を見つけたことを付け加えたいと思います。レポート パラメーターの [詳細設定] タブに移動します。次に、「パラメーターが変更されたときにデータを更新する:」を「常に更新する」にします。それにもかかわらず、私の質問はまだ残っています。SetItemParameters メソッドを使用して可能かどうかを知りたいです。

4

1 に答える 1