2015-04-08 38 views
0

我有一個自定義object1(Lent_c圖書館借出的圖書列表,它有2個圖書查找和人員查找)與2個查找圖表具有另一個自定義對象2(圖書對象,它有3個領域數量,借用的領域數量和ISBN)。我正在嘗試使用object1更改object2中的值。這是我正在使用的代碼。我如何從apex中的ID獲取對象

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列

到Book__c從我的理解它的返回ID而不是Book__c對象類型

回答

1

爲了您的上面的代碼,不需要爲這個代碼編碼 - 只需在你的Book對象上有一個彙總字段,它總結了Lent項目的數量。至於你的實際問題,只要你知道你正在尋找什麼類型的對象,你的上面的代碼是: Book_c book = new Book__c(Id = l.Book_Details__c);

現在,您將不得不進行查詢以獲取借用的書籍數量,以便您可以遞增1,因此,一旦收集完所有ID,就必須發出一個soql查詢。所以這裏是學習的完整解決方案。 觸發Book_lentout上Lent__c(插入前){

 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(我希望)。但是,再一次,你應該通過一個彙總字段來做到這一點。

相關問題