首页 > 解决方案 > 如何在 APEX 中创建具有不同 SOQL 的列表集合

问题描述

我有一个 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();

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

标签: salesforceapex

解决方案


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

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'不需要也不应该使用绑定表示法。


推荐阅读