当我从Web服务中获取数据时在SSRS中使用ElementPath时,我没有得到任何结果

时间:2012-09-12 16:10:44

标签: asp.net web-services reporting-services web ssrs-2008

我创建了一个Web服务,它返回一个我手动填充数据的数据集。当我启动服务并获得结果时,这就是我返回的XML。

<DataSet>
  <xs:schema id="Results">
    <xs:element name="Results" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="BillInfo">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccountType" type="xs:string" minOccurs="0"/>
                <xs:element name="AccountNumber" type="xs:string" minOccurs="0"/>
                <xs:element name="AmountDue" type="xs:decimal" minOccurs="0"/>
                <xs:element name="BillDescription" type="xs:string" minOccurs="0"/>
                <xs:element name="DaysTilDue" type="xs:int" minOccurs="0"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

  <diffgr:diffgram>
    <Results>
      <BillInfo diffgr:id="BillInfo1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
        <AccountType>PP</AccountType>
        <AccountNumber>1</AccountNumber>
        <AmountDue>307.6500</AmountDue>
        <BillDescription>Bill Number 20121</BillDescription>
        <DaysTilDue>-362</DaysTilDue>
      </BillInfo>
      <BillInfo diffgr:id="BillInfo2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
        <AccountType>PP</AccountType>
        <AccountNumber>1</AccountNumber>
        <AmountDue>307.6500</AmountDue>
        <BillDescription>Bill Number 20121</BillDescription>
        <DaysTilDue>-362</DaysTilDue>
      </BillInfo>
    </Results>
  </diffgr:diffgram>
</DataSet>

如果我没有设置元素路径并尝试将我的SSRS DataSet设置为等于结果,那么我将获得作为信息返回的模式。每当我尝试输入一个元素路径时,我都没有得到任何结果。我不确定我做错了什么。下面我展示了我正在使用的查询,包括加载我的SSRS数据集的ElementPath

<Query>
    <SoapAction>http://tempuri.org/GetBillData</SoapAction>
    <Method Namespace="http://tempuri.org/" Name="GetBillData" />
      <Parameters>
        <Parameter Name="PartyID">
          <DefaultValue>0</DefaultValue>
        </Parameter>
      </Parameters>
    <ElementPath IgnoreNamespaces="True"> DataSet {}/ diffgram {}/ Results {}/BillInfo</ElementPath>
</Query>

如果有人知道我做错了什么,我很乐意听到。

由于

2 个答案:

答案 0 :(得分:2)

这将使它确实有效。所有问题都是正确的语法

<Query>
<Method Name="GetBillData" Namespace="http://tempuri.org/" >
<Parameters>
<Parameter Name="PartyID">
<DefaultValue>0</DefaultValue>
</Parameter>
</Parameters>
</Method>
<ElementPath IgnoreNamespaces="True">
GetBillDataResponse/GetBillDataResult/diffgram/Results/BillInfo
</ElementPath>
<SoapAction>http://tempuri.org/GetBillData</SoapAction>
</Query>

答案 1 :(得分:1)

如果我没记错的话,“ElementPath”必须是这样的: GetBillDataResponse {} / GetBillDataResult {} /数据集{} / {的DiffGram} ... Fiddler可以帮助您了解数据结构。