Почему SSRS игнорирует данные из определенных столбцов, возвращаемых веб-методом? - PullRequest
3 голосов
/ 10 ноября 2008

Я использую функцию источника данных XML в службах Reporting Services 2005, но у меня возникают проблемы с отсутствующими данными. Если для первого столбца в строке нет значения, создается впечатление, что SSRS игнорирует весь столбец!

Запрос веб-метода очень прост:

<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 будет полностью пустым. Если «Проблемы» поменялись местами, так что RaisedBy сначала имеет значение, проблем нет. Есть идеи?

Ответы [ 2 ]

7 голосов
/ 10 ноября 2008

В самом Query попытайтесь определить столбцы явно, вместо того, чтобы позволить SSRS определять их для вас.

Другими словами, где у вас есть:

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

Заменить * на что-то вроде:

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

Конечно, этот точный XPath может быть неправильным для вашего примера.

0 голосов
/ 10 ноября 2008

Возможно ли исключить NULL в XML? Заменить их пустой строкой? Тогда вам не придется бороться с SSRS.

Если XML генерируется из вызова базы данных, это достаточно просто сделать (ISNULL в SQL Server).

...