2008-11-10 3 views
3

Reporting Services 2005에서 XML 데이터 원본 기능을 사용하고 있지만 누락 된 데이터에 문제가 있습니다. 행의 첫 번째 열에 값이 없으면 SSRS에서 전체 열을 무시한 것처럼 보입니다! 웹 메서드에서 반환 된 특정 열의 데이터를 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가 처음 값을 가지면 문제가 없습니다. 어떤 아이디어?

+0

언제든지 RDL을 게시 할 수 있습니까? –

답변

7

쿼리 자체에서 SSRS가 결정하도록 대신 쿼리 열을 명시 적으로 정의하십시오.

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

같은 것을 함께 * 교체 : 당신은 즉,

물론

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

, 그 정확한 XPath는 귀하의 예를 들어 정확하지 않을 수 있습니다.

+0

감사합니다. 올바른 XPath는 다음과 같습니다. GetIssuesResponse/GetIssuesResult/Issue {Title, RaisedBy, Action} –

0

XML에서 NULL을 제거 할 수 있습니까? 빈 문자열로 바꾸시겠습니까? 그러면 SSRS와 씨름하지 않아도됩니다.

데이터베이스 호출로 XML을 생성하면 쉽게 처리 할 수 ​​있습니다 (SQL Server에서는 ISNULL).

관련 문제