opérations sur les lignesFor(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 c'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
Modélisation statistique avancéeConception d'expériencesIngénierie Qualité et ProcédésRe : opérations sur les lignesSi la première ligne a une date de fin réelle_ vide, votre script recherche la ligne précédente, ce qui ne fonctionnera pas.Vous devez remplacer cette ligne par quelque chose qui ne fait pas référence à la ligne précédente :
:"bouge pas"n = :"Operation Due Date_"n - :Operation Start Date_[Row() - 1],
Re : opérations sur les lignes
Par exemple pour les lignes 2, 3 4... le résultat est 6 jours alors qu'il devrait être 1 jour
Re : opérations sur les lignesFor 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_
);
)

Cela ne fonctionne toujours pas car dès la première ligne j'ai des lignes vides dans la colonne :Actual Finish Date_ et je ne sais pas comment faire
Re : opérations sur les lignesSi la valeur de la ligne 1 pour la date de fin réelle est manquante, aucun des scripts actuellement proposés ne fonctionnera.Il faut donc régler ce problème.Le code ci-dessous, une simple modification du JSL original fonctionnera.
Remarque : j'ai commis une erreur de logique sur la version originale du code.Je l'ai modifié ci-dessous.
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]
);
);
Re : opérations sur les lignessi vous parcourez les lignes d'une table de données (j'essaie généralement de l'éviter et d'utiliser une formule ou de définir chaque valeur), je suggère 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 lors de l'accès ou de l'évaluation de ':Operation Start Date_[ /*###*/x - 1]' , :Operation Start Date_[/*###*/x - 1] )
Essayez de définir les valeurs x manuellement 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_
);
);
*/