salesforce - 如何在 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();
任何建议如何使它工作?谢谢
解决方案
在/构造PulledOpportunities
之外声明变量。您的变量的作用域是它们最近的封闭块(花括号),因此当它们结束时它们会超出作用域。if
else
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'
不需要也不应该使用绑定表示法。
推荐阅读
- python - Tensorflow 中 sess.run([op1, op2...]) 的顺序
- javascript - React Native 选项卡导航显示问题
- python - 如何为我的应用程序的不同用户动态生成 facebook 页面令牌。我希望不同的用户直接从我的应用发布到页面
- android - 为什么文件的新ActionView有黑色背景
- liferay - React NPM Porlet 已部署,但在 Liferay 7 的应用程序面板中不可用
- javascript - NodeJS + TypeScript + Webpack4:访问非 web NodeJS 应用程序的 webpack 应用程序变量
- c++ - 打印出一个在类内双重包裹的多项式
- android - SDK 管理器未在 Eclipse 中打开
- python - 在 python 执行中尝试 except 语句
- c# - ADO.net 数据表正在更改时间