3

Reporting Services 2005 の XML データ ソース機能を使用していますが、データが見つからないという問題があります。行の最初の列に値がない場合、列全体が SSRS によって無視されているように見えます。

Web メソッド リクエストは非常に単純です。

<Query>
   <Method Name="GetIssues" 
Namespace="http://www.mycompany.com/App/">
   </Method>
   <SoapAction>http://www.mycompany.com/App/GetIssues</SoapAction>
   <ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

同様に、応答は非常に単純です。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <GetIssuesResponse xmlns="http://www.mycompany.com/App/">
      <GetIssuesResult>
        <Issue>
          <Title>ABC</Title>
          <RaisedBy />
          <Action>Do something</Action>
        </Issue>
        <Issue>
          <Title>ABC</Title>
          <RaisedBy>Jeff Smith</RaisedBy>
          <Action>Do something</Action>
        </Issue>
      </GetIssuesResult>
    </GetIssuesResponse>
  </soap:Body>
</soap:Envelope>

この例では、RaisedBy 列は完全に空になります。「Issues」が逆で RaisedBy が最初に値を持つ場合、問題はありません。何か案は?

4

2 に答える 2

7

クエリ自体で、SSRS に列を決定させるのではなく、列を明示的に定義してみてください。

言い換えれば、あなたが持っている場所:

<ElementPath IgnoreNamespaces="true">*</ElementPath>

* を次のように置き換えます。

<ElementPath IgnoreNamespaces="true">GetIssues/GetIssuesItemsResult/listitems/data/row{@Title,@RaisedBy,@Action}</ElementPath>

もちろん、その正確な XPath はあなたの例では正しくないかもしれません。

于 2008-11-10T17:53:16.687 に答える
0

XML の NULL をなくすことはできますか? それらを空の文字列に置き換えますか? そうすれば、SSRS と格闘する必要はありません。

XML がデータベース呼び出しから生成される場合、それは簡単に実行できます (SQL Server では ISNULL)。

于 2008-11-10T17:45:07.733 に答える