For(x=1,x<=N Rows(dt),x++,
If(IsMissing(Column( dt, "Actual Finish Date_" )[x]),
Column( dt, "bouge pas" )[x] = Column( dt, "Operation Due Date_" )[x] - :Operation Start Date_ [x-1],
Column( dt, "bouge pas" )[x] = Column( dt, "Actual Finish Date_" )[x] - :Actual Execution Start Date_ [x]
);
);
Hallo, mein Problem ist, dass ich in der ersten Zeile des for die Zeile x-1 für die Spalte :Operation Start Date_ möchte, aber diese Syntax funktioniert nicht? Vielen Dank
Wenn Sie die Zeilen einer Datentabelle durchlaufen (normalerweise würde ich versuchen, dies zu vermeiden und Formeln zu verwenden oder jeden Wert festzulegen), würde ich vorschlagen, For Each Row() anstelle von For() zu verwenden. Ohne Beispieldaten würde ich vermuten, dass das Problem darin bestehen könnte, dass Sie 0 als Zeilennummer erhalten, was in JMP nicht gültig ist ( Ungültige Zeilennummer in Zeile 2 beim Zugriff oder Auswertung von ':Operation Start Date_[ /*###*/x - 1]' , :Operation Start Date_[/*###*/x - 1] )
Versuchen Sie, x-Werte manuell einzustellen und sehen Sie, was Sie erhalten, fügen Sie Debug-Ausdrucke hinzu und werfen Sie einen Blick auf das Protokoll
Hier ist ein Beispielskript mit einigen optionalen Ideen, wie Sie Werte für Bouge-Pas-Spalten festlegen können
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Actual Finish Date_", Numeric, "Continuous", Format("Best", 12), Set Values([1, 4, 6])),
New Column("Actual Execution Start Date_", Numeric, "Continuous", Format("Best", 12), Set Values([0, 2, 3])),
New Column("Operation Start Date_", Numeric, "Continuous", Format("Best", 12), Set Values([10, 21, 32])),
New Column("Operation Due Date_", Numeric, "Continuous", Format("Best", 12), Set Values([11, 22, 33])),
New Column("bouge pas", Numeric, "Continuous")
);
For(x = 1, x <= N Rows(dt), x++,
If(Is Missing(Column(dt, "Actual Finish Date_")[x]),
Column(dt, "bouge pas")[x] = Column(dt, "Operation Due Date_")[x] - :Operation Start Date_[x - 1],
Column(dt, "bouge pas")[x] = Column(dt, "Actual Finish Date_")[x] - :Actual Execution Start Date_[x]
);
);
/* better option in my opinion
For Each Row(dt,
If(Is Missing(:"Actual Finish Date_"n),
:"bouge pas"n = :"Operation Due Date_"n - :Operation Start Date_[Row() - 1],
"bouge pas"n = :"Actual Finish Date_"n - :Actual Execution Start Date_
);
);
*/
/* usually best option
Column(dt, "bouge pas") << Set Each Value(
If(Is Missing(:"Actual Finish Date_"n),
:"Operation Due Date_"n - :Operation Start Date_[Row() - 1],
:"Actual Finish Date_"n - :Actual Execution Start Date_
);
);
*/