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]
);
);
Bonjour, mon problème est que je veux dans la première ligne du for, la ligne x-1 pour la colonne :Operation Start Date_ mais cette syntaxe ne marche pas ? Merci
si vous faites une boucle sur les lignes d'une table de données (généralement, j'essaierais de l'éviter et d'utiliser une formule ou de définir chaque valeur), je suggérerais d'utiliser For Each Row() au lieu de For(). Sans avoir d'exemple de données, je suppose que le problème pourrait être que vous obtiendrez 0 comme numéro de ligne, ce qui n'est pas valide dans JMP ( Numéro de ligne non valide à la ligne 2 dans l'accès ou l'évaluation de ':Operation Start Date_[ /*###*/x - 1]' , :Operation Start Date_[/*###*/x - 1] )
Essayez de définir manuellement les valeurs x et voyez ce que vous obtenez, ajoutez des impressions de débogage et jetez un œil au journal
Voici un exemple de script avec quelques idées facultatives sur la façon dont vous pouvez définir les valeurs des colonnes bouge pas
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_
);
);
*/