如何在APEX中使用不同的soql创建列表集合



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

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();

有什么建议吗?由于

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'这样的静态值不需要,也不应该使用绑定符号。

最新更新