Comment éviter une erreur lors de la sélection d’une ligne dans une zone de tableau filtrée ?J'utilise JMP 17.1 et j'ai le script ci-dessous qui fonctionne grâce à @jthi aide.Lorsque j'exécute le script, j'obtiens une zone de tableau de Big Class.jmp dans une fenêtre et je peux sélectionner une ligne et elle renvoie les valeurs de taille et de poids de la ligne sélectionnée.Dans mon application réelle, j'ai un tableau beaucoup plus grand que j'aimerais filtrer en cliquant avec le bouton droit dans la fenêtre et en choisissant "Filtrer où...".Lorsque j'obtiens la table filtrée dans la zone Table, parfois la ligne sélectionnée renvoie les données et d'autres fois, elle renvoie une erreur indiquant "Problème d'indice lors de l'accès ou de l'évaluation de 'hvals[/*###*/sel], hvals[ /*###*/sel]".Dans mon exemple ci-dessous, je clique avec le bouton droit sur la zone de table Big Class et je filtre par sexe == F.
Avez-vous des idées sur la façon dont je peux récupérer des données pour toutes les lignes de la zone de table de sous-ensemble ?
names default to here(1);
//run this now
dt = open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(row() <= 10) << get as report;
tb = rpt[Table Box(1)];
tb << Set Selectable Rows();
tb << set row change function( Function( {this}, sel = this << get selected rows ) );
sel = tb << get row change function;
nw = new window("test",
v list box(
outline box("Big Class", rpt),
text box("Click 'OK' to choose height and weight"),
Button box("OK",
hvals = tb[NumberColBox("height")] << get;
wvals = tb[NumberColBox("weight")] << get;
ht = hvals[sel][1];
wt = wvals[sel][1];
print(sel, ht,wt);
)
)
);Vous trouverez ci-dessous des images du tableau d'origine (10 premières lignes de Big Class), du tableau Big Class après filtrage par sexe et choix de la ligne où l'erreur se produit en premier, ainsi que le message d'erreur.Veuillez noter que le script fonctionne sur le tableau filtré sur les 5 premières lignes mais pas sur les lignes 6 ou 7.
Automatisation et scriptsRe : Comment éviter une erreur lors de la sélection d'une ligne dans une zone de tableau filtrée ?Cela ressemble à un bug où vous ne pouvez pas obtenir les lignes qui sont APRÈS les lignes filtrées
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = tb << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
tb << Set Selected Rows([2]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Set Selected Rows([6]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Reset Filter;
sel = tb << get selected rows;
show(sel);
Re : Comment éviter une erreur lors de la sélection d'une ligne dans une zone de tableau filtrée ?Je vous suggère de contacter le support JMP (je peux aussi le faire si vous le souhaitez) à ce sujet. Il existe probablement plusieurs solutions de contournement différentes, mais en voici une qui semble fonctionner (en utilisant clone box()).
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = (tb << clone box()) << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
Je ne sais pas si cette boîte clonée est stockée quelque part, il serait donc préférable de la stocker dans une variable, d'obtenir les lignes sélectionnées, puis de définir cette variable comme manquante.
Re : Comment éviter une erreur lors de la sélection d'une ligne dans une zone de tableau filtrée ?Je signalerai cela au support JMP.@jthi , Merci beaucoup pour toute votre aide.
Re : Comment éviter une erreur lors de la sélection d'une ligne dans une zone de tableau filtrée ?Lorsque vous recevez une réponse du support, s'ils ont des solutions de contournement, veuillez les ajouter ici. Il peut également être judicieux de publier également l'identifiant du ticket (si quelqu'un a une question similaire et est lié à ce sujet, le personnel JMP peut alors rechercher cet identifiant du ticket et éventuellement vérifier son statut).
Re : Comment éviter une erreur lors de la sélection d'une ligne dans une zone de tableau filtrée ?Le ticket d'assistance JMP est : TS-00063284