Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeAvertissement : Question de niveau débutant
J'ai une table de données à laquelle j'ajoute une colonne temporaire (:Parameter_new) pour remplir d'entrées si une certaine condition est remplie. Les entrées que je souhaite ensuite placer dans une autre colonne (:Parameter_old). Mon impression est que le code se comporte différemment lorsqu'il fait partie du script final, par rapport au moment où je copie des lignes individuelles dans un script différent. Lors de l'application du code de script ligne par ligne, tout fonctionne comme prévu. Lorsqu'il est implémenté dans le script final, je n'obtiens que des valeurs vides. Où est-ce que je me trompe ?
//Code works OK
dt << New Column ("Parameter_new", character);
dt << go to( :Parameter_new ) << move selected columns( After( :Parameter_old ));
For Each Row(
If(:Parameter_old == "Parameter x",
:Parameter_new = :Parameter_old || " " || "by" || " " ||:Method_description));
dt << select where(:Parameter_old == "Parameter x");
//Code does not work and deletes all entries in column "Parameter_old", i.e. cells come out blank
//Code does however work if applied individually, line by line
:Name("Parameter_old")[dt << get selected rows] = :Parameter_new;ScriptRe : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeSalut. Il semble y avoir eu un changement dans la plate-forme communautaire. Nous avons contacté le support. En attendant, nous avons implémenté un correctif temporaire qui devrait vous permettre d'utiliser le bouton comme prévu. Merci.
Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeTous mes blocs de code sont signalés pour des erreurs lors de la publication ici sur les forums de la communauté.Plus précisément, le `class=" language-jsl"` à l'intérieur du bloc est supprimé, comme ci-dessous
Names Default To Here( 1 );
x = [10, 50, 90];
y = [10, 90, 10];
New Window( "Line Seg Example", g = Graph Box( Line Seg( x, y ) ) );
frame = g[FrameBox( 1 )];
seg = (frame << Find Seg( Line Seg( 1 ) ));

Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeJe suis content que vous ayez pu résoudre le problème. En ce qui concerne le codage couleur, il semble que vous utilisiez le qui se trouve à gauche du dans la barre d'outils de l'éditeur.
Vous avez peut-être essayé de les utiliser tous les deux sur le même extrait, mais un seul fonctionne. J'ai corrigé la mise en forme dans vos deux messages.
Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeEst-ce que je me sens stupide d'apprendre les Si maintenant...
Aussi, pourquoi mon extrait de code JSL est-il tout gris ? Comment puis-je obtenir la police et les couleurs correctes ?
dt2 << New Column ("Parameter_new", character);
dt2 << go to( :Parameter_new ) << move selected columns( After( :Parameter_old ));
For Each Row(
If( :Parameter_old == "Parameter x", :Parameter_new = :Parameter_old || " " || "by" || " " || :Method_description,
:Parameter_old != "Parameter x", :Parameter = :Parameter_old));Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeMerci. Semble intéressant. S'il vous plaît, donnez-moi un peu de temps avant que j'aie réglé les détails de cette approche, que je puisse publier mon code initial sous une forme complète et accepter votre message comme solution.
(Aussi, pourquoi mon code JSL est-il formaté sans couleur dans ma publication ? J'utilise l'icône pour insérer des extraits.)
Edit: Merveilleux article sur l'abonnement. Je n'étais pas au courant de cela, mais j'ai fait une lecture intéressante. J'ai depuis accepté une réponse de moi-même comme solution, car cela m'apparaissait intuitivement plus facile.
Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeMerci ih, j'apprécie la réponse! J'ai essayé les deux, ça n'a pas marché. Ouvert aux suggestions lors de la pêche dans le guide de script.
Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeLa déclaration finale a une matrice sur le côté gauche (LHS) et une colonne sur le côté droit (RHS).
Vous avez deux cas différents : à l'intérieur de ForEachRow et à l'extérieur. Si à l'intérieur, il y a une ligne implicite et la colonne se résout en un scalaire. Si à l'extérieur, il n'y a pas de ligne implicite. Vous aviez probablement exactement une ligne sélectionnée quand cela fonctionnait à l'intérieur de ForEachRow.
une matrice de colonnes (LHS) ne prend en charge qu'un scalaire sur le RHS. Cela ne fonctionnera pas correctement avec une matrice sur le RHS.
Vous pouvez utiliser Abonnement aux tables de données Au lieu. Cela traite le tableau comme une matrice 2D (3 lignes, 1 colonne dans ce petit exemple.)
dt = Open( "$sample_data/big class.jmp" );
dt[[2, 3, 4], {name}] = dt[[5, 6, 7], {name}];Re : Une partie du code JSL ne fonctionne pas dans le script final, mais fonctionne si elle est isoléeJMP n'évalue probablement pas la formule dans Parameter_new avant de passer à la ligne suivante.Essayez d'ajouter ceci après votre fonction For Each Row :
dt << Run Formulas;
En outre, vous pouvez utiliser une attente :
Wait(0);