1

我需要从自定义设置中获取对象的名称,并根据我需要创建一个动态 Sooql 来获取子对象 ID 的名称,以便与特定用户共享它们。

请参阅下面我正在尝试实现此目的的部分触发代码。

SubQ =',(select id from ' + CustomMap.get(objName).API_Field__c + ')'; 
String queryStr=' select id '+ SubQuery + ' from Account where id in:accId';

List<Account> objdata =Database.query(queryStr);

for(String objName : CustomMap.keyset()) {

// Here custom map contains object name as key.
// objdata is the Account List created from sooql.

     for(Account ac : objdata){
       for(objName obj : ac.objName ){

      if(recordIdsMap.containsKey('ObjName')){
          List<String> recordIds = recordIdsMap.get('ObjName');
            recordIds.add(obj.Id);
            system.debug('recordIds' + recordIds);
           recordIdsMap.put('ObjName',recordIds);
           }
            else{
             system.debug('Recordid'  + obj.id);

            recordIdsMap.put('ObjName', new List<String> {obj.id});

}

但它在这里给出了类型转换错误:

for(objName obj : ac.objName ){

因为 objname 是字符串而不是这里的对象,即使我尝试将其转换为 sobject 它也不起作用,因为 soject id 是最高级的对象,并且无法从帐户中调用它。

如果我在这里对对象进行硬编码,如下所示:

 for(cases obj : ac.cases){

它会起作用,但我的要求是使其通用。

4

0 回答 0