Tableau de données à la fermeture Problème selon la manière dont il est ferméBonjour, j'ai un problème avec la façon dont JMP décide de fermer les tables de données qui ont le script suivant :
dt << On Close(close(Current Data Table(),nosave));
Mon principal problème est de savoir comment les tables de données se ferment lorsqu'il y a plusieurs fenêtres ouvertes avec ce script. Si le X dans le coin supérieur droit est utilisé, il fonctionnera parfaitement 10/10 fois, mais si vous descendez dans la barre des tâches et survolez chaque table et appuyez sur X, il peut fermer plusieurs tables de données (généralement des tables de données qui ont été ouvertes après celui qui est fermé) qui peut causer des problèmes si nous utilisons activement d'autres tables.
La table de données actuelle est-elle transportée dans les autres tables de données ? J'essayais de trouver un moyen de m'éloigner de l'approche de la table de données actuelle et de lui faire saisir le nom actuel de la table de données et d'essayer de la fermer de cette façon, mais j'avais des problèmes.
Est-ce un problème avec le script ou un problème avec la gestion par JMP de la fermeture des fenêtres via la barre des tâches ?
Merci,
Automatisation et scriptRe : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméQuelles tables de données essayez-vous de fermer avec On Close() ?
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméN'utilisez pas CurrentDataTable(). Jamais, si cela peut être évité. Comme vous l'avez remarqué, la table actuelle est définie en cliquant sur une table, et quelques autres possibilités. Apparemment, la barre des tâches ne compte pas comme un clic sur le tableau.
Je pense que vous essayez d'appliquer le "nosave" pour oublier tout changement. (vous pouvez également utiliser la fonction setDirty(0).) Voici deux manières de procéder.
Tout d'abord, avec un paramètre 'this', a dans cet exemple. Il contient une fenêtre qui a une boîte enfant qui connaît la table.
dt = Open( "$sample_data/big class.jmp" );
dt << onclose(
Function( {a},
Close( (a << child) << getdatatable, nosave );
1;
)
);
Deuxièmement, en cuisant dans le tableau :
dt = Open( "$sample_data/big class.jmp" );
Eval(
Eval Expr(
dt << onclose(
Close( Expr( dt ), nosave );
1;
)
)
);
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméL'exemple setdirty :
dt = Open( "$sample_data/big class.jmp" );
Eval(
Eval Expr(
dt << onclose(
Expr( dt ) << setdirty( 0 );
1;
)
)
);
Si tel est votre objectif, cela pourrait être légèrement plus correct ; Les composants internes de JMP ne seront pas surpris lorsque le script onclose revient et que la table est déjà fermée. Pour celui-ci, le 1; qui est renvoyé signale à JMP de poursuivre la fermeture de la table.
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméTableaux de données qui extraient des informations d'une autre source de données (LIMS, Excel, etc.).
Il extrait les informations, puis des scripts génèrent automatiquement des graphiques IR, appliquent des limites de contrôle aux colonnes et quelques autres petites commodités.
J'essaie de rendre les choses aussi automatisées que possible dans la conception des scripts et il devrait y avoir une interférence humaine minimale avec la table de données. Tout ce que nous devons examiner vous saute aux yeux et vous indiquera si des mesures doivent être prises.
Étant donné que ceux-ci sont tirés d'une vue en lecture seule de LIMS/Excel, il n'y a aucune raison d'avoir besoin de sauvegarder quoi que ce soit, sauf dans de rares circonstances où une manipulation supplémentaire est nécessaire.
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméCela fait le travail jusqu'à présent! Si je rencontre des situations qui tournent mal, je reviendrai.
Merci Craig!
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméAvez-vous essayé les autres options (en utilisant Fermer) @Craige_Hales suggéré (sans utiliser << Set Dirty). Je pense qu'ils devraient fonctionner même si vous avez des rapports ouverts. Une autre option serait d'obtenir la liste de tous les rapports associés à la table de données et de les fermer en premier (je ne sais pas s'il existe une fonction simple pour cela).
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméBonjour Jarmo,
Je viens d'essayer l'un des autres exemples que Craige avait présentés et cela a fini par fonctionner. J'ai vraiment besoin de regarder toutes les réponses données avant de répondre à l'avenir. Il est facile d'oublier qu'il existe un million de façons de faire la même chose dans JMP et tous les commentaires ici m'aident à me le rappeler.
Merci pour votre aide.
Re : Table de données sur le problème de fermeture en fonction de la façon dont il est ferméBonjour Craige, un petit problème est survenu avec l'approche Set Dirty.
Avec la méthode Current Data Table, il fermerait également toutes les fenêtres ouvertes qui dépendaient de l'ouverture de la table de données, comme une carte de contrôle. Quelle serait la meilleure approche pour le forcer à fermer toutes les fenêtres dépendantes afin qu'il ferme l'intégralité de la table de données en un clic et aucune autre invite ?
Modifier:
Eval(
Eval Expr(
dt << onclose(
Close( Expr( dt ), nosave );
1;
)
)
);
Celui-ci fonctionne pour fermer toutes les fenêtres dépendantes. je n'avais pas essayé ! Merci de votre aide à tous.
Re : Tableau de données sur le problème clôturé en fonction de la manière dont il est ferméIl semble que l'option onClose ne soit pas enregistrée avec la table de données.
Existe-t-il une possibilité de stocker le paramètre onClose avec la table de données ?
Sinon, existe-t-il une possibilité d'exécuter le message OnClose de manière transparente lorsque la table de données est ouverte par l'utilisateur ?
j'ai essayé de mettre
dt << on close( Function( {a}, Close( (a << child) << getdatatable, nosave ); 1;));dans mon script On Open Table, mais maintenant, chaque fois que j'ouvre la table de données, Jmp affiche l'avertissement :

Hm, je planifie un script
- de gros mots pour "dire à la fin à Jmp de ne rien faire, même pas de sauvegarder les données" 