Проблем с изграждането на моя SOQL низ за заявка

Имам SOQL заявка,

Искам да проверя полетата в заявката за FSL (сигурност на ниво поле), преди да създам низа на заявката, и ако не са четими, не ги добавяйте към низа. Това може да не е най-добрият подход, но е откъде да започна. Следното работи добре.

String soql = 'SELECT Id, MAX(Name) personName, MAX(From_Date__c) fromDate, MAX(Status__c) status' 
String end  = ' FROM The_Object__c WHERE Id = :Id'

soql += end

SObject r = Database.query(soql);

Така че, за да проверите полето, преди да го добавите към низа... Може би нещо като това: (което не работи)

String extra_soql = ', SUM(Revenue__c) revenue ';

if (!Schema.sObjectType.The_Object__c.fields.Revenue__c.isAccessible()){ 

    REMOVE THE SOQL SOMEHOW? OR PASS AN EMPTY STRING TO THE QUERY?

    extra_soql = ''; <-- DOESNT WORK
    extra_soql = ' '; <-- DOESNT WORK
    extra_soql = NULL; <-- DOESNT WORK

    NOT SURE WHAT TO DO IN HERE
}

soql += extra_soql
soql += end

SObject r = Database.query(soql);

Всякакви предложения или съвети ще бъдат високо оценени.


person Daft    schedule 20.06.2014    source източник


Отговори (1)


Ако не можете да получите достъп до полето Revenue__c поради сигурност на ниво поле, можете просто да пропуснете добавянето му към динамичната SOQL заявка. Може да искате да зададете булева стойност, която може да се използва на по-късен етап, за да посочи, че приходите не са налични.

String soql = 'SELECT Id, MAX(Name) personName, MAX(From_Date__c) fromDate, MAX(Status__c) status';

boolean revenueAvailable = Schema.sObjectType.The_Object__c.fields.Revenue__c.isAccessible();
if(revenueAvailable) { 
    soql += ', SUM(Revenue__c) revenue';
}

soql += ' FROM The_Object__c WHERE Id = :Id';

SObject r = Database.query(soql);
person Daniel Ballinger    schedule 21.06.2014