使用以下SOAP,我可以从Dynamics 2011 IFD安装中检索自特定日期以来已修改的所有联系人。 此外,它还会从链接的“会员资格”中返回一些字段。记录。
但是,如果存在多个会员记录,则返回所有我需要返回的最新会员记录(续订日期字段的日期最长,会员付款日期字段(日期时间)不为空)。
任何人都可以帮助如何调整以下内容,以便它不会为每个联系人的会员记录返回记录 - 每个联系人只有一条记录,只有最新的会员记录字段。
<s:Body>
<RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<query i:type="a:QueryExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
<a:ColumnSet>
<a:AllColumns>false</a:AllColumns>
<a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>contactid</b:string>
<b:string>firstname</b:string>
<b:string>lastname</b:string>
</a:Columns>
</a:ColumnSet>
<a:Criteria>
<a:Conditions />
<a:FilterOperator>And</a:FilterOperator>
<a:Filters>
<a:FilterExpression>
<a:Conditions>
<a:ConditionExpression>
<a:AttributeName>createdon</a:AttributeName>
<a:Operator>GreaterThan</a:Operator>
<a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType>
</a:Values>
</a:ConditionExpression>
<a:ConditionExpression>
<a:AttributeName>modifiedon</a:AttributeName>
<a:Operator>GreaterEqual</a:Operator>
<a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType>
</a:Values>
</a:ConditionExpression>
</a:Conditions>
<a:FilterOperator>Or</a:FilterOperator>
<a:Filters />
</a:FilterExpression>
</a:Filters>
</a:Criteria>
<a:Distinct>true</a:Distinct>
<a:EntityName>contact</a:EntityName>
<a:LinkEntities>
<a:LinkEntity>
<a:Columns>
<a:AllColumns>false</a:AllColumns>
<a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>statecode</b:string>
<b:string>new_cancelledmembership</b:string>
<b:string>py3_membershipproduct</b:string>
<b:string>new_reasoncancelled</b:string>
<b:string>new_cancelleddate</b:string>
<b:string>py3_renewaldate</b:string>
<b:string>modifiedon</b:string>
</a:Columns>
</a:Columns>
<a:EntityAlias i:nil="true" />
<a:JoinOperator>Inner</a:JoinOperator>
<a:LinkCriteria>
<a:Conditions />
<a:FilterOperator>And</a:FilterOperator>
<a:Filters>
<a:FilterExpression>
<a:Conditions>
<a:ConditionExpression>
<a:AttributeName>py3_membershippaymentdate</a:AttributeName>
<a:Operator>NotNull</a:Operator>
</a:ConditionExpression>
</a:Conditions>
<a:FilterOperator>Or</a:FilterOperator>
</a:FilterExpression>
</a:Filters>
</a:LinkCriteria>
<a:LinkEntities />
<a:LinkFromAttributeName>contactid</a:LinkFromAttributeName>
<a:LinkFromEntityName>contact</a:LinkFromEntityName>
<a:LinkToAttributeName>py3_member</a:LinkToAttributeName>
<a:LinkToEntityName>py3_membership</a:LinkToEntityName>
<a:Orders>
<a:OrderExpression>
<a:AttributeName>py3_renewaldate</a:AttributeName>
<a:OrderType>Ascending</a:OrderType>
</a:OrderExpression>
</a:Orders>
</a:LinkEntity>
</a:LinkEntities>
<a:PageInfo>
<a:Count>0</a:Count>
<a:PageNumber>0</a:PageNumber>
<a:PagingCookie i:nil="true" />
<a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>
</a:PageInfo>
<a:NoLock>false</a:NoLock>
</query>
</RetrieveMultiple>
</s:Body>
答案 0 :(得分:1)
根据我的理解,您试图将链接实体数限制为1?如果是这样,那是不可能的。忽略链接实体Top/Count,返回满足连接条件(内部/外部)的所有记录。
您必须反转您的查询才能找到前1&#34;会员资格&#34;通过订购&#34;续订日期&#34;并过滤&#34; ContactId&#34;并使用&#34;联系&#34;作为一个链接实体,这将确保只有1&#34;会员资格&#34;实体永远归还。