ZeilenoperationenFor(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_ haben möchte, aber diese Syntax funktioniert nicht? Danke
Erweiterte statistische ModellierungVersuchsplanungQualitäts- und VerfahrenstechnikBetreff: ZeilenoperationenWenn die erste Zeile ein leeres tatsächliches Enddatum_ enthält, sucht Ihr Skript nach der vorherigen Zeile, was nicht funktioniert.Sie müssen diese Zeile durch etwas ersetzen, das nicht auf die vorherige Zeile verweist:
:"bouge pas"n = :"Operation Due Date_"n - :Operation Start Date_[Row() - 1],
Betreff: Zeilenoperationen
Zum Beispiel für die Zeilen 2, 3, 4... ist das Ergebnis 6 Tage, obwohl es 1 Tag sein sollte
Betreff: ZeilenoperationenFor 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_
);
)

Es funktioniert immer noch nicht, weil ich ab der ersten Zeile leere Zeilen in der Spalte „Tatsächliches Enddatum_“ habe und nicht weiß, wie ich das machen soll
Betreff: ZeilenoperationenWenn der Wert für das tatsächliche Enddatum in Zeile 1 fehlt, funktioniert keines der derzeit vorgeschlagenen Skripte.Daher muss dieses Problem gelöst werden.Mit dem folgenden Code funktioniert eine einfache Änderung der ursprünglichen JSL.
Hinweis: Mir ist in der Originalversion des Codes ein logischer Fehler unterlaufen.Ich habe es unten geändert.
For( x = 1, x <= N Rows( dt ), x++,
If( Is Missing( Column( dt, "Actual Finish Date_" )[x] ),
If( Row() > 1,
Column( dt, "bouge pas" )[x] = Column( dt, "Operation Due Date_" )[x] - :Operation Start Date_[x - 1],
Column( dt, "bouge pas" )[x] = 0; // Set the value if there is not an X-1 row (i.e. row 1)
),
Column( dt, "bouge pas" )[x] = Column( dt, "Actual Finish Date_" )[x] - :Actual Execution Start Date_[x]
);
);
Betreff: ZeilenoperationenWenn Sie eine Schleife über die Zeilen einer Datentabelle ausführen (normalerweise würde ich versuchen, dies zu vermeiden und eine Formel 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 bei der Auswertung von „:Operation Start Date_[ /*###*/x – 1]“, :Operation Start Date_[/*###*/x – 1] )
Versuchen Sie, x-Werte manuell festzulegen und sehen Sie, was Sie erhalten, fügen Sie Debug-Ausdrücke hinzu und werfen Sie einen Blick auf das Protokoll
Hier ist ein Beispielskript mit einigen optionalen Ideen, wie Sie die Werte für 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_
);
);
*/