0

Visualforce ページに AggregateResult を表示したいのですが、次のエラーが発生しています" Invalid field Email for SObject AggregateResult"

以下は私のコードです:

public with sharing class searchDuplicate {
public   AggregateResult[] con{get;set;}

public searchDuplicate()
{
    find();
}
public void find(){
   con = [select Email from Contact group by Email having count(Email) > 1];
    System.debug(con);
}
}

以下は私のvisualforceページコードです:

<apex:page controller="searchDuplicate">
<apex:pageBlock title="Searching for Duplicate Contacts Record"> 
</apex:pageBlock>
<apex:pageBlock title="Contacts">
    <apex:dataTable value="{!con}" var="c" border="2" cellspacing="5" cellpadding="5">
        <apex:column headerValue="Email" value="{!c['Email']}" />
    </apex:dataTable>
</apex:pageBlock>     
</apex:page>

親切に可能であれば修正してください

4

3 に答える 3

2
public with sharing class searchDuplicate {
public  list <con> conList{get;set;}

public class con{
   public string Email {get;set;}
   public con( string email){
      this.Email = email;
   }
}
public searchDuplicate()
{
    find();
}
public void find(){
conList = new  list <con>();  
for( AggregateResult ar : [select Email from Contact group by Email having count(Email) > 1];){ conList.add(new con(string.valueOf(ar.get('Email'))))  } 

}
}
于 2013-05-07T10:31:14.023 に答える
0

あなたの問題を解決する上で他の答えは正しいですが、あなたが実際に持っているのはSalesForceのバグです.

カスタム オブジェクトを作成せずにこれを解決する方法は、 を 2 つに分けることです。「headerValue」と「value」の両方が設定されていると、このエラーが発生します。

これを次のように変更します。

<apex:dataTable value="{!con}" var="c" border="2" cellspacing="5" cellpadding="5">
    <apex:column headerValue="Email" >
        <apex:outputText>{!c['Email']}</apex:outputText>
    </apex:column>
</apex:dataTable>

ありがとう、マイケル

于 2014-09-22T13:39:34.060 に答える
0

集計結果 (およびそのフィールド/列) は、sObject ではなく汎用オブジェクトとして提供されます。したがって、呼び出すことができる obj.get('somefieldname') はありません。

最良の選択肢は、String email; Integer count;フィールドを持つヘルパー クラスを作成し、クエリ結果をループして、このヘルパー クラスのオブジェクトのリストを作成することです。

使用することもできますMap<String, Integer>が、アルファベット順にソートされていないため、VF になります。

コード サンプルが必要な場合は、https://salesforce.stackexchange.com/questions/7412/count-a-grouped-by-soqlを参照してください。

于 2013-05-07T10:11:20.857 に答える