Comment mettre à jour le tableau après le tri ?Bonjour tout le monde,
J'ai un problème concernant le tri d'une table. Je voulais trier le tableau par date (situé dans la colonne Date1) et je le fais une fois que certaines conditions sont remplies. Cependant, il ne trie pas et ne remplace pas le tableau EL_summary après tri. Y a-t-il un rafraichissement nécessaire ? J'ai mis aussi du retard, je pensais qu'il fallait attendre un peu. Quand je n'utilise pas remplacer le tableau(1), la nouvelle table sous un nom différent est créée et ouverte (ce que je ne veux pas) et encore une fois, les données de cette table ne sont pas triées. Après cela, cependant, les données dans EL_summary semble être mis à jour et trié. J'apprécierais de pointer ce qui me manque. Cordialement
Table de données actuelle ( EL_summary );
if( N rows(EL_summary) > 0, EL_summary << sort(by(:name("Date1")), Order( Ascending ), replace table(1)));
attendre(1);
Re : Comment mettre à jour le tableau après le tri ?Salut, quelle est la manière officielle de trier une table de données via JSL avec l'option RemplacerTable() ?
Comme indiqué précédemment, s'il y a des rapports ouverts, le script se bloque avec le message d'erreur :

... même si le graphique ne dépend pas de l'ordre dans la table de données :
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
dt<< Sort( By( :height ), Replace Table, Order( Ascending ));
Que diriez-vous de remplacer le texte par quelque chose comme :
Malheureusement, dans la version actuelle de Jmp, il n'est pas possible de trier un tableau avec des rapports ouverts.
Jmp ne peut pas remplacer la table existante car il y a une chance... hm, vous savez, les fenêtres de rapport peuvent dépendre de la commande précédente. Malheureusement, il n'y a pas d'option pour vérifier cela - et il n'y a pas d'option pour l'ignorer. Le script s'arrêtera donc ici.

Re : Comment mettre à jour le tableau après le tri ?Ok, j'arrive à cacher la nouvelle table de données. Cette table de données était la table de données actuelle, j'ai donc désactivé sa visibilité en utilisant
Current Data Table() << ShowWindow( 0 );
Merci à tous pour votre soutien. Cordialement.
Re : Comment mettre à jour le tableau après le tri ?Vous pouvez gérer cela de différentes manières.
La sortie qui empêche le tri de la table de données peut être déplacée vers un journal pour être affichée, et l'affichage d'origine peut ensuite être supprimé, ce qui permettra au tri d'avoir lieu.
Vous pouvez également créer une nouvelle table de données qui est soit invisible, soit privée, ce qui empêchera l'affichage de la nouvelle table de données.Recherchez les options Invisible ou Private dans le sous-ensemble de la table de données dans l'index de script.
Re : Comment mettre à jour le tableau après le tri ?Bonjour, merci pour les suggestions !
J'ai créé une interface graphique et le tri doit être effectué après avoir sélectionné un élément dans la zone de liste. Après cela, certaines images doivent être affichées dans cette interface graphique dans l'ordre basé sur les valeurs triées. En fait, JMP ne fournit aucune information de journal utile indiquant la source du problème. Existe-t-il un moyen de masquer ou de rendre invisible la nouvelle table de données (et indésirable) créée après le tri ? Ce serait une solution de contournement.
Re : Comment mettre à jour le tableau après le tri ?Salut,
Ce code s'est exécuté comme prévu lorsqu'aucun graphique n'est ouvert :
Untitled = data table("Untitled.jmp");
if( N rows(Untitled) > 0, Untitled << sort(by(:name("Column 1")), Order( Ascending ), replace table(1)));
Mais le tri ne fonctionne pas si vous avez des graphiques ouverts,
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending ), replace table(1)));
</DISTRIBUTION>
Regardez le fichier journal et nous voyons:
JMP cannot replace the existing table because there are report windows that depend on the previous ordering.
Mais si nous supprimons la table de remplacement, elle s'exécutera sans erreur mais lancera une nouvelle table de données avec les lignes triées, ce qui n'est pas souhaité.
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending )));</DISTRIBUTION>
Vous pouvez donc vérifier le fichier journal pour voir s'il est informatif. Si vous avez des graphiques ou des tableaux dépendants ouverts, vous devrez peut-être repenser la logique du script. Est-il possible de re-trier avant de créer des tableaux et des graphiques dépendants, par exemple.
Re : Comment mettre à jour le tableau après le tri ?votre tableau de données est-il lié à un tableau précédent, il ne peut donc pas être modifié ?Re : Comment mettre à jour le tableau après le tri ?Utilisez Try pour intercepter l'erreur, puis gérez l'erreur en conséquence.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(437, 413),
Graph Spacing(4),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
Try(
dt << Sort(By(:height), Replace Table, Order(Ascending));
,
If(Starts With(exception_msg[1], "JMP cannot replace the existing table because there are report windows"),
dt1 = dt << Sort(By(:age), Order(Ascending)); // will create new table
/*
// if you wish to just keep one, order to create new, close old and rename new
old_name = dt << get name;
Close(dt, no save)
dt1 << set name(old_name);
dt = dt1;
*/
);
);
Utilisation de JMP > Remodeler vos données > Trier les tableaux de données
Remplacer le tableau
Remplace la table de données d'origine par la table triée au lieu de créer une nouvelle table avec les valeurs triées. Cette option n'est pas disponible s'il existe des fenêtres de rapport ouvertes générées à partir de la table d'origine.
Re : Comment mettre à jour le tableau après le tri ?Hm, avec cette solution de contournement, le script ne plantera pas ...
d'autre part : les données ne seront pas triées mais un nouveau tableau sera généré 
Pour le moment, je vais préférer quelque chose comme :
Try (sort,
Caption("Sorry, not possible to sorting the table, please close all reports and sort manually");stop());
Pour l'avenir, j'espère qu'il y aura quelque chose comme
Table de données : obtenez des rapports (et d'autres options)
Try(
sort,
If( New Window( "ask User", ... ),
myAffectedReports = dt << get reports with ordering issues();
myAffectedReports << close window;
sort;
)
)
ou
sort(..., ignoreEffectOnReports())
ou
sort(..., closeReportsWithOrderingIssue());
Re : Comment mettre à jour le tableau après le tri ?Je veux écrire un Addin qui trie la table de données.
Au lieu de Try(sort, message d'erreur) quelque part dans l'exécution de l'AddIn, je souhaite informer l'utilisateur au début qu'il doit fermer tous les rapports avant de démarrer l'Addin.
Comment puis-je faire cela avec Jmp17?
Re : Comment mettre à jour le tableau après le tri ?Une option :
- Utilisez << Get Window List pour obtenir des références à toutes les fenêtres ouvertes (vous pouvez limiter cela à Type ("Rapports") si vous le souhaitez)
- Bouclez sur cette liste et vérifiez s'il y en a qui dépendent de la table de données triée (vous devriez pouvoir utiliser soit le nom de la fenêtre de rapport OU << Get Data table. Si le rapport appartient à la table de données, ajoutez-le à la liste
- S'il y a des éléments dans la liste, affichez le message à l'utilisateur
Re : Comment mettre à jour le tableau après le tri ?Fonctionne très bien merci 
closeMyReports = Function( {dt},
{default local},
AllmyReports = {};
myReports = Get Window List( Type( "Reports" ) );
For Each( {rep}, myReports,
Try(
myList = (rep << Xpath( "//OutlineBox" )) << get scriptable Object();
myDTs = Transform Each( {scriptableObject}, myList, If( Is Empty( scriptableObject ), ., scriptableObject << Get Data Table() ) );
If( Contains( myDTs, dt ),
Insert Into( AllmyReports, rep )
);
)
);
If( N Items( AllmyReports ) > 0,
If(
ex = New Window( "",
<<TYPE></TYPE>
modifier: maintenant, le script vérifie également les rapports plus compliqués avec de nombreuses tables de données.
Re : Comment mettre à jour le tableau après le tri ?Prochaine étape : y a-t-il une commande ?
dt << get linked subsets()
