【问题标题】:How to create List collection with different SOQLs in APEX如何在 APEX 中创建具有不同 SOQL 的列表集合
【发布时间】:2021-06-01 13:49:54
【问题描述】:

我有一个在插入后触发的 APEX 触发器。假设通过 SOQL 选择机会并将其分配给 List 集合。 但是 List 和 SOQL 依赖于另一个变量 Vehicle_Type__c。下面的代码不起作用,我收到错误“PulledOpportunities”变量不存在。

if ( l.Vehicle_Type__c != 'Truck' ) {


List<Opportunity> PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName =: 'Active' AND Med_Expiration__c >=: System.TODAY() AND Opp_Record_Type_ID__c =: 'ABC' AND WareHouse__c IN: WarehouseList];

} else {


List<Opportunity> PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName =: 'Active' AND Opp_Record_Type_ID__c =: 'ABC' AND WareHouse__c IN: WarehouseList];

}

Integer FoundOpportunities = PulledOpportunities.size();

任何建议如何使它工作? 谢谢

【问题讨论】:

    标签: salesforce apex


    【解决方案1】:

    if/else 构造之外声明变量PulledOpportunities。您的变量的作用域是它们最近的封闭块(花括号),因此当 if 结束时它们会超出作用域。

    List<Opportunity> PulledOpportunities;
    
    if ( l.Vehicle_Type__c != 'Truck' ) {
        PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName = 'Active' AND Med_Expiration__c >=: System.TODAY() AND Opp_Record_Type_ID__c = 'ABC' AND WareHouse__c IN: WarehouseList];
    } else {
        PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName = 'Active' AND Opp_Record_Type_ID__c = 'ABC' AND WareHouse__c IN: WarehouseList];
    }
    
    Integer FoundOpportunities = PulledOpportunities.size();
    

    还请注意,在与 Apex 变量进行比较时,您应该只使用 : 绑定运算符。像 'Active' 这样的静态值不需要也不应该使用绑定表示法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2020-04-07
      相关资源
      最近更新 更多