我是 apex 的新手,正在尝试构建一个每天运行的 apex 时间表课程。如果佣金的帐户审核日期是两周(14 天)之后,调度员将向我们的销售部门发送一封电子邮件。
我几乎完成了该程序,但我不断收到此错误:
错误:编译错误:比较参数必须是兼容类型:Schema.SObjectField,第 9 行第 9 列的日期
这是我的代码:
global class AccountReviewScheduler implements Schedulable
{
global void execute (SchedulableContext ctx)
{
sendEmail();
}
public void sendEmail()
{
if (Account__r.Next_Account_Review_Date__c == System.today().addDays(14))
{
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
Mail.setTemplateId('00XF0000000LfE1');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail });
}
}
}
我做了一些研究,另一个讨论板上的评论者告诉我它不起作用,因为 Account__r.Next_Account_Review_Date__c 只是一个字段。
我必须将它与记录一起使用以使其具有价值。然后我可以将该值与 system.today() 进行比较。
我不确定这意味着什么......创建一个自定义对象?我不知道该怎么做。这是我遇到问题的修改后的代码。这是我修改后的代码:
这是修改后的代码(星号**表示更改)
global class AccountReviewScheduler implements Schedulable
{
global void execute (SchedulableContext ctx)
{
sendEmail();
}
public void sendEmail()
{
**CustomObj__c co = [select Account__r.Next_Account_Review_Date__c from CutomObj__c limit 1];**
**if(co.Account__r.Next_Account_Review_Date__c == system.today().addDays(14))**
{
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
Mail.setTemplateId('00XF0000000LfE1');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail });
}
}
}
更改以粗体显示...我知道自定义 obj 代码可能是错误的...我从其他人那里得到了它,但我不知道该怎么做。
注意:基于时间的工作流程在此处不起作用,因为此电子邮件必须每年(多年)在帐户审核日期前 14 天发送。基于时间的工作流将在设置为触发一年后运行一次,但不要重复。它们不会按设计重复出现。请参阅:http ://success.salesforce.com/questionDetail?qId=a1X30000000JnPMEA0
我已阅读调度文档: http: //www.salesforce.com/us/developer/docs/apexcode/Content/apex_scheduler.htm
并浏览了 Apex 工作簿教程:http://blogs.developerforce.com/developer-relations/2010/02/spring-10-saw-the-general-availability-of-one-of-my-favorite-new- features-of-the-platform-the-apex-schedulerwith-the-apex-s.html 以及官方 Apex 指南中的教程 14,但我仍然遇到问题。
对我的代码/新资源链接的任何帮助/见解将不胜感激。