problème dans la boucle forbonjour à tous, je n'arrive pas à comprendre pourquoi cette formule de boucle for ne fonctionne pas. Il crée simplement une nouvelle colonne si les unités sont dans le temps, puis la convertit en heures. Des exemples de données sont également joints. Merci.
ColNames = dt << get column names( string, Numeric, character, continuous, Nominal );
N Items( ColNames );
For( i = 1, i <= N Items( ColNames ), i++,
If( Ends With( ColNames[i], "(secs)" ),
New Column (Concat(ColNames[i], "_to_", "Hr"), Formula(AS Column(ColNames[i])/3600) ),
Ends With( ColNames[i], "(min)" ),
New Column (Concat(ColNames[i], "_to_", "Hr"), Formula(AS Column(ColNames[i])/60) ),)
);
Wait( 0 );
ScriptRe : problème dans la boucle forLe problème est que l'élément Formula n'analyse pas la formule présentée, puis ne place pas le code résultant dans la formule.Par conséquent, ce qui est présenté à l'élément de formule doit être exactement le JSL que la formule doit être.Ci-dessous une refonte de votre jsl
Names Default To Here( 1 );
dt = Current Data Table();
ColNames = dt << get column names( string, Numeric, character, continuous, Nominal );
//N Items( ColNames );
For( i = 1, i <= N Items( ColNames ), i++,
If(
Ends With( ColNames[i], "(secs)" ),
New Column( Concat( ColNames[i], "_to_", "Hr" ),
Formula( Eval( Parse( ":\!"" || ColNames[i] || "\!"n / 3600" ) ) )
),
Ends With( ColNames[i], "(min)" ),
New Column( Concat( ColNames[i], "_to_", "Hr" ),
Formula( Eval( Parse( ":\!"" || ColNames[i] || "\!"n / 60" ) ) )
),
)
);Re : problème dans la boucle forVous pouvez également envisager d'utiliser Devis JSL() , ce qui permet au code de rester en surbrillance
Names Default to Here( 1 );
dt = Current Data Table();
For( i = 1, i <= N Cols( dt ), i++,
column name = Column( dt, i ) << Get Name;
If( Ends With( column name, "(secs)" ),
Eval( Parse( Eval Insert( JSL Quote(
dt << New Column( "^column name^_to_Hr", Formula( :Name("^column name^" ) / 3600 ) )
) ) ) )
,
Ends With( column name, "(min)" ),
Eval( Parse( Eval Insert( JSL Quote(
dt << New Column( "^column name^_to_Hr", Formula( :Name("^column name^" ) / 60 ) )
) ) ) )
)
);Re: problème dans la boucle forMerci Jim, ça marche.
Re: problème dans la boucle forMerci Erratic, ça marche. Les deux solutions (celles de Jim et de toi) fonctionnent bien. Mais la solution que tu as fournie, je ne l'ai jamais vue (code JSL()). Merci.