我有一个自定义对象1(Lent_c在图书馆中借出的书籍列表。它有2个字段书籍查找和人物查找),其中2个查找字段有另一个自定义对象2(书籍对象。它有3个字段数量,数量在查找领域中借用了字段和ISBN)。我试图使用object1更改object2中的值。这是我正在使用的代码。
trigger Book_lentout on Lent__c (before insert) {
for(Lent__c l:Trigger.new)
{
Book__c k = l.Book_Details__c;
k.Books_Borrowed__c++;
}
}
它给我一个错误错误:编译错误:在第4行第9列从Id到Book__c的非法分配
从我理解的返回ID而不是Book__c对象类型
答案 0 :(得分:1)
对于上面的代码,不需要为此代码编写代码 - 只需在Book对象上添加一个汇总字段,该字段汇总了Lent项目的数量。
至于你的实际问题,只要你知道你正在寻找什么类型的对象,你的上述代码就是: Book_c book = new Book__c(Id = l.Book_Details__c);
现在,你必须进行查询才能获得借来的书籍数量,这样你就可以增加1,所以你必须在收集所有id之后发出一个soql查询。所以这是学习的完整解决方案。 触发Lent__c上的Book_lentout(插入前){
Id[] bookIds = new List<Id>();
for(Lent__c lent : Trigger.new)
{
bookIds.add(l.Book_Details__c);
}
Book__c[] books = [select Books_Borrowed__c from Book__c where Id in :bookIds];
for (Book__c b : books) {
b.Books_Borrowed__c += 1;
}
}
这甚至都没有完成,因为你可以为每本书提供多个借出记录,但是你得到了jist(我希望)。但同样,你应该通过汇总领域来做到这一点。