sObject 결과에 불확실한 수의 필드가 포함될 수있는 쿼리 작성기를 작성하려고합니다. 결과를 사용하여 동적 테이블을 만들었지 만 sObject에서 쿼리에 포함 된 필드 목록을 읽는 방법을 찾을 수 없습니다.일반 sObject에서 필드 목록을 얻으려면 어떻게해야합니까?
getDescribe 정보를 사용하여 모든 필드 목록을 얻는 방법을 알고 있지만 쿼리에 해당 필드가 모두 포함되어 있지 않을 수 있습니다.
이 방법이 있습니까?
sObject 결과에 불확실한 수의 필드가 포함될 수있는 쿼리 작성기를 작성하려고합니다. 결과를 사용하여 동적 테이블을 만들었지 만 sObject에서 쿼리에 포함 된 필드 목록을 읽는 방법을 찾을 수 없습니다.일반 sObject에서 필드 목록을 얻으려면 어떻게해야합니까?
getDescribe 정보를 사용하여 모든 필드 목록을 얻는 방법을 알고 있지만 쿼리에 해당 필드가 모두 포함되어 있지 않을 수 있습니다.
이 방법이 있습니까?
아마도 동적이기 때문에 쿼리를 문자열로 작성하고 있으므로 설명 정보의 필드를 반복하여 쿼리 문자열에 .contains()
을 사용하여 요청되었는지 확인하십시오. 미친 우아함이 아니라 단순한 해결책처럼 보입니다.
추가로, 문자열 목록 또는 유사한 목록에서 선택한 필드 목록을 가지고있을 수 있으며, 그 목록을 사용할 수 있습니까?
정확하게 이것이 이전과 똑같은 것인지 확실하지는 않지만 다음과 같은 것이 있는지 확인하십시오. 당신이이 분야의 사용자를 검색
if(searchParameter.field1__c != null && searchParameter.field1__c != '')
{
QueryString += ' field1__c like \'' + searchParameter.field1__c + '%\' and ';
}
if(searchParameter.field2__c != null && searchParameter.field2__c != '')
{
QueryString += ' field2__c like \'' + searchParameter.field2__c + '%\' and ';
}
마지막과
를 제거하면 검색을 구축 할 필요로public list<sObject> Querylist {get; set;}
검색 문자열
string QueryString = 'select field1__c, field2__c from Object where';
이들의 많은 추가 정의
QueryString = QueryString.substring(0, (QueryString.length()-4));
QueryString += ' limit 200';
검색어 추가 sObject 필드의 목록을 얻을 수있는 목록
for(Object sObject : database.query(QueryString))
{
Querylist.add(sObject);
}
O를, 당신은 다음과 같은 방법을 사용할 수 있습니다 : 당신은 당신의 문맥이 방법을 bulkily하기 위해 리팩토링한다
public Set<String> getFields(sObject sobj) {
Set<String> fieldSet = new Set<String>();
for (String field : sobj.getSobjectType().getDescribe().fields.getMap().keySet()) {
try {
a.get(field);
fieldSet.add(field);
} catch (Exception e) {
}
}
return fieldSet;
}
,하지만 작동합니다. sObject를 전달하면 필드 이름 집합이 반환됩니다.
sobjecttype이 aggregateresult 인 경우 어떻게합니까? –
쿼리 및 테이블을 만드는 데 필드 목록을 사용하는 것이 좋습니다. 결과의 필드 목록을 사용하여 누구나 사용할 수 있습니다. 그런 다음 result.getFields()를 사용하여 테이블을 구성하고 result.getRows()를 사용하여 데이터를 검색 할 수 있습니다.
for (sObject obj : result.getRows()) {
for (String fieldName : result.getFields()) {
table.addCell(obj.get(fieldName));
}
}
사용자가 제어 할 수없는 쿼리로 작업하려는 경우 쿼리를 구문 분석하여 필드 목록을 가져와야합니다. 그러나 나는 그것을 시도하는 것을 제안하지 않을 것이다. 따라하기 어려운 방식으로 코드를 복잡하게 만듭니다.
Apex-Lang을 확인해 보셨습니까? 그것은 잘 설계된 역동적 인 질의 기능을 많이 가지고 있기 때문에 바퀴를 다시 만들 필요가 없습니다. 이 유틸리티 코드를 많이 찾는 첫 번째 장소입니다. – jkraybill