0

所以这就是我们正在尝试做的事情;

我们有一个设置,用户输入五个主要变量,我们可以从这些变量中生成另外 30 个变量。

例如,用户输入 Qty.5 并选择产品。从这里我们的顶点代码计算螺栓和螺钉的数量以及你有什么并将它们显示在记录中。

从这里我们希望用户能够编辑计算字段,并且计算使用新输入的变量。为此,我们需要能够在更新之前比较字段的值。

当前触发设置:

trigger Basin_Calcs on Basins__c (before insert, before update) 
{
    List<Basins__c> calcs = Trigger.new;
    for (Basins__c p:calcs){
        Basins__c pOld = System.Trigger.oldMap.get(p.Id);

        if (p.Basin_Geometry__c == 'Channel'){
        BasinCalcClass.chaBasinCalc(calcs);
        }
    }
}

当前班级设置:

public class BasinCalcClass{
    public static void recBasinCalc(List<Basins__c> calcs, Map<ID, Basins__c> pOld){

        for (Basins__c p:calcs){
           Basins__c beforeupdate = pOld.get(p.Id);


           double L = p.Rectangular_Length__c;
        }
    }
}

所以我相信到目前为止这是半正确的。第一个问题是在触发器中调用类。

BasinCalcClass.chaBasinCalc(calcs);

我也尝试过同时通过 calcs 和 pOld 但都不起作用?也许它与它是地图有关?

我们希望将旧变量传递给类,以便我们可以将它们与新变量进行比较,并决定运行什么代码。

第二个问题是比较旧的和新的。我想我可以这样做;

if(p.Rectangular_Length__c == pOld.Rectangular_Length__c){blah}

这个对吗?

我们一直在使用这些作为参考;

https://salesforce.stackexchange.com/questions/9752/apex-checking-trigger-old-versus-trigger-new

http://techman97.wordpress.com/2011/10/22/comparing-new-values-vs-old-values-in-apex-trigger/

但我似乎无法弄清楚变量如何传递给班级。

4

0 回答 0