1

我正在使用 Microsoft Dynamics CRM 4.0 的 SOAP API,并且在大多数情况下一切正常,但是当我尝试计算数据库中的联系人总数(或特定查询)时,它不尊重 TotalRecordCount =真标志。

这是我正在使用的 SOAP 请求:

<?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:Header>
        <CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
            ...
        </CrmAuthenticationToken>
    </soap:Header>

    <soap:Body>
        <RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
            <query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression">
                <q1:EntityName>contact</q1:EntityName>
                <q1:Distinct>true</q1:Distinct>
                <q1:PageInfo>
                    <q1:ReturnTotalRecordCount>true</q1:ReturnTotalRecordCount>
                    <q1:PageNumber>1</q1:PageNumber>
                    <q1:Count>1</q1:Count>
                </q1:PageInfo>
            </query>
        </RetrieveMultiple>
    </soap:Body>
</soap:Envelope>

但是我得到的回复仍然包含以下内容:

TotalRecordCount="-1" TotalRecordCountLimitExceeded="0"

知道我做错了什么/在这里失踪了吗?

4

1 回答 1

0

您在查询中得到任何结果吗?例如,您是否收到联系记录?

我很确定我过去在使用这种方法时遇到过问题(使用分页信息进行计数)。

在任何情况下,使用聚合函数执行 FetchXml 查询可能会更好(我假设您从 JavaScript 执行此 Soap)。

Jamie Miley 有一个很好的例子来说明如何做到这一点:http: //mileyja.blogspot.co.uk/2011/06/aggregation-count-max-min-etc-and.html

这里有一个非常好的 FetchXml 设计师:http: //www.stunnware.com/

于 2012-08-04T14:44:59.547 回答