0

Microsoft CRM 2011 をオンラインで使用し、Web サービスを使用して、Web サービス呼び出しによって作成された OrganizationServiceStub クラスを使用して、Main.java で以下のメソッドを使用しています。取得されたレコードの数が -1 である出力は、私が間違っているところを誰かが助けることができます。アカウント ID を指定せずに、名前が「Tel」で始まるアカウントを取得したいと考えています。CRM にデータが存在することがわかります。ありがとう

public static void getAccountDetails(OrganizationServiceStub service, ArrayOfstring fields)
{
    try{
    ArrayOfanyType aa = new ArrayOfanyType();   
    aa.setAnyType(new String[] {"Tel"});

    ConditionExpression condition1 = new ConditionExpression();
    condition1.setAttributeName("name");


    condition1.setOperator(ConditionOperator.BeginsWith);
    condition1.setValues(aa);

    ArrayOfConditionExpression ss = new ArrayOfConditionExpression();
    ss.setConditionExpression(new ConditionExpression[] {condition1});

    FilterExpression filter1 = new FilterExpression();
    filter1.setConditions(ss);

    QueryExpression query = new QueryExpression();
    query.setEntityName("account");

    ColumnSet cols = new ColumnSet();
    cols.setColumns(fields);
    query.setColumnSet(cols);

    query.setCriteria(filter1);

    RetrieveMultiple ll = new RetrieveMultiple();
    ll.setQuery(query);

    RetrieveMultipleResponse result1 = service.retrieveMultiple(ll);

    EntityCollection accounts = result1.getRetrieveMultipleResult();

    System.out.println(accounts.getTotalRecordCount());        
} 
catch (IOrganizationService_RetrieveMultiple_OrganizationServiceFaultFault_FaultMessage e) {
    logger.error(e.getMessage());
    e.printStackTrace();
} 
catch (RemoteException e) {
    logger.error(e.getMessage());
    e.printStackTrace();
}
}
4

2 に答える 2

3

Java の場合、上記の問題に対応するこのコード スニペットを含める

ArrayOfanyType aa = new ArrayOfanyType();   
aa.setAnyType(new String[] {"555"});
ConditionExpression condition1 = new ConditionExpression();

condition1.setAttributeName("telephone1");

condition1.setOperator(ConditionOperator.BeginsWith);
condition1.setValues(aa);

ArrayOfConditionExpression ss = new ArrayOfConditionExpression();
ss.setConditionExpression(new ConditionExpression[] {condition1});

FilterExpression filter1 = new FilterExpression();
filter1.setConditions(ss);

QueryExpression query = new QueryExpression();
query.setEntityName("account");

PagingInfo pagingInfo = new PagingInfo();
pagingInfo.setReturnTotalRecordCount(true);

query.setPageInfo(pagingInfo);

OrganizationServiceStub.ColumnSet colSet = new OrganizationServiceStub.ColumnSet();
OrganizationServiceStub.ArrayOfstring cols = new OrganizationServiceStub.ArrayOfstring();

cols.setString(new String[]{"name", "telephone1", "address1_city"});

colSet.setColumns(cols);

query.setColumnSet(colSet);
query.setCriteria(filter1);

RetrieveMultiple ll = new RetrieveMultiple();
ll.setQuery(query);

OrganizationServiceStub.RetrieveMultipleResponse response = serviceStub.retrieveMultiple(ll);
EntityCollection result = response.getRetrieveMultipleResult();
ArrayOfEntity attributes = result.getEntities();

Entity[] keyValuePairs = attributes.getEntity();

for (int i = 0; i < keyValuePairs.length; i++) {
    OrganizationServiceStub.KeyValuePairOfstringanyType[] keyValuePairss = keyValuePairs[i].getAttributes().getKeyValuePairOfstringanyType();
    for (int j = 0; j < keyValuePairss.length; j++) {
         System.out.print(keyValuePairss[j].getKey() + ": ");
         System.out.println(keyValuePairss[j].getValue());
    }
}
于 2013-07-16T09:17:07.000 に答える
0

EntityCollectionオブジェクトが SDK の .Net バージョンとどの程度似ているかはわかりませんが、プロパティに値を持たせるにはReturnTotalRecordCount、.Net のクエリの PagingInfo で指定する必要があります。TotalRecordCount代わりにチェックしていただけませんaccounts.Entities.Countか?

注:私はJavaの男でもありません...

于 2012-09-17T13:28:26.807 に答える