Sélectionnez le tableau, puis les colonnesBonjour, je suis nouveau dans JMP et JSL et j'ai du mal à créer un script qui sélectionne une table, puis 2 colonnes, puis fait quelque chose avec ça.
Voici un exemple
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>Dans cet exemple, j'essaie un script simple dans lequel je peux sélectionner l'une des tables déjà ouvertes, sélectionner 2 colonnes et créer un tracé simple. Cependant, je n'arrive pas à faire en sorte que le programme reconnaisse la table spécifique que je sélectionne.
À l'avenir, je devrai interagir avec plusieurs tables en même temps et sélectionner différentes colonnes dans différentes tables pour obtenir mes résultats. Je pensais que ce script serait un début facile. Je serais très reconnaissant si quelqu'un pouvait également me fournir une brève explication sur les raisons pour lesquelles je ne peux pas sélectionner le tableau que je choisis dans la première case, ou comment l'améliorer, ainsi que la solution à mon script.
Merci!
Automatisation et scriptsPartager et communiquer les résultatsRe : Sélectionnez le tableau, puis les colonnesJe vous suggère de lire sur les fenêtres modales dans le Guide de script.Honnêtement, je vous suggère de lire l'intégralité du guide de script.
Aide==>Bibliothèque de documentation JMP
Re : Sélectionnez le tableau, puis les colonnesMerci beaucoup, vos exemples clarifient la plupart de mes questions. Mon principal problème était de savoir comment pointer la table pour faire fonctionner mon code, maintenant que je vois toutes ces différentes options, il est très clair où se trouvaient mes erreurs.
Encore une chose, quand tu dis " Les fenêtres modales ont des actions par défaut avec les boutons OK et Annuler", que me recommandez-vous pour en savoir plus ? J'ai le guide de script mais je ne l'ai pas lu, pensez-vous que je peux le trouver là-bas ? Ou suggérez-vous une autre source ?
Merci!
Re : Sélectionnez le tableau, puis les colonnesSalut,
J'ai trouvé des problèmes supplémentaires avec votre script d'origine que je pense avoir résolus (par exemple, référence incorrecte au tableau de données dans votre zone de liste de colonnes)
Voici ma solution qui peut encore être un peu maladroite du point de vue du codage :
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Re : Sélectionnez le tableau, puis les colonnesLes fenêtres modales ont des actions par défaut avec les boutons OK et Annuler, qui peuvent gâcher le code que vous pensez être en train de se produire.Je trouve préférable d'adopter les actions par défaut et d'apporter des ajustements simples à mon code pour obtenir ce que je veux.Voici ma modification de la partie de sélection de votre table de votre code pour que la table de données sélectionnée soit définie à la fois comme table de données actuelle, et également pour que la variable "dt" soit définie comme pointeur vers la table de données.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@Thierry_S la suggestion d'utiliser une liste pour résoudre le problème est une bonne idée.Cependant, je le fais un peu différemment.J'enregistre la référence complète à la table de données dans la liste, pas seulement le nom.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Re : Sélectionnez le tableau, puis les colonnesMerci beaucoup, mais cela ne résout pas mon problème. En fait, j'avais déjà eu un script comme celui-ci et j'ai commencé à compliquer les choses parce que je n'arrive pas à faire en sorte que ma Col List Box mette à jour la liste des colonnes avec la table de données sélectionnée. Peut-être que mon problème vient de cette partie du code ?Re : Sélectionnez le tableau, puis les colonnesSalut,
Il semble que vous ayez compliqué les choses en créant un indice pour attribuer la sortie de dtlb à dt.
Je me demande si la variante suivante fonctionnerait mieux pour vous (plus besoin d'avoir le "OKScript"
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>