exécuter un script de tableQuelle est la différence entre exécuter un script de table via l'icône verte Play :

... et via le bouton Exécuter ?

Automatisation et scriptsRe : exécuter le script de la tableY a-t-il des raisons de soupçonner qu’il y a une différence ? Depuis la « fenêtre » du script vous pouvez par exemple exécuter des parties distinctes en les mettant en surbrillance.
Re : exécuter le script de la tableIls font généralement la même chose.
La petite flèche verte est plus rapide, un clic.
: )
Re : exécuter le script de la tableAprès avoir inventé les 3èmes "solutions" à un "problème de timing" dans un script de table - malheureusement sans réel succès
... J'ai découvert que la vraie différence était :
- exécuter le script via l' icône de lecture → problème
- ouvrez la fenêtre de script - [essayez un nouveau code... ou rien] - et cliquez sur le bouton Exécuter → pas de problème.
Re : exécuter le script de la tableL'exécution en cliquant sur la flèche verte d'exécution exécute le script sur la table de données à laquelle il est attaché.
L'exécution du script à partir de la fenêtre Modifier exécute le script sur la table de données actuellement active, qui n'est peut-être pas la table de données dans laquelle le script a été enregistré.
Re : exécuter le script de la tableJe le pensais aussi...
Re : exécuter le script de la tableBonne idée,
mais en fait, pour le mode "Editer", j'ai fait attention à ce que "ma table" soit active avant de cliquer sur exécuter.
Et : c'est le mode "Editer" qui fonctionne 
cela est peut-être lié à une table de données actuelle () quelque part dans le code - qui peut agir différemment si le script est démarré via l'icône de lecture - ou via le bouton Exécuter.
:)il suffit de mettre un:) la table de données actuelle () directement dans un script de table n'a pas montré de différence entre les deux approches.
Mais mon code est une longue chaîne de JSL, menu principal (" ... "), ouvrir un fichier, joindre, concaténer...
:)Je vais essayer de réduire la complexité pour montrer la différence - ou pour générer un exemple anonymisé...
Re : exécuter le script de la tableJ'ai essayé d'ajouter
current data table();
pour voir s'il pointerait le script vers la table de données sur laquelle le script a été enregistré, ce qui n'est pas le cas. Le script s'est exécuté sur la table de données actuelle, quelle qu'elle soit.
Re : exécuter le script de la tableCurrent Data Table() ne peut être invoqué dans aucun de ces cas. Si une nouvelle table s'ouvre immédiatement après avoir appuyé sur le triangle vert, la table actuelle peut changer avant l'exécution du script (ce n'est probablement pas le cas avec le bouton d'exécution vert, mais cela pourrait). Assez facile à tester avec un script comme celui-ci
wait(1);
Caption(Current Data Table() << get name);
Exécutez le script en appuyant sur le triangle vert et appuyez immédiatement sur Ctrl+N pour créer une nouvelle table.
Il semble cependant que si vous laissez Current Data Table() en dehors, cela déclenchera sur la table à partir de laquelle le script a été exécuté (dans les deux cas)
wait(1);
Current Data Table() << New Column("A");
contre
wait(1);
New Column("A");
Re : exécuter le script de la tableConcernant mon problème
En fait, à la fin, c'était une question de timing
... comme Jarmo l'a décrit - mais en quelque sorte l'inverse :
J'utilise un AddIn personnalisé pour charger un fichier.
Et comme le menu principal ne peut pas renvoyer de valeur de retour
,
J'ai utilisé la table de données actuelle () pour accéder à la table nouvellement créée
c'était l'idée...
//<FONT face="courier new,courier">Open( "$SAMPLE_DATA/Big Class.jmp" );</FONT><BR />Main Menu("load_");
// wait(1);
dt= current data table(); // the idea: myDT
caption(dt << get name())
a) Si j'utilise simplement Open( "$SAMPLE_DATA/Big Class.jmp" ) , tout se passe bien.
Par contre, après avoir ouvert la table de données via Main Menu("load_") ,
la table de données actuelle fait toujours référence à ma table principale (!).
L'activation de wait(1) a résolu le problème - avec des frais de pénalité d'une seconde.
b) Pour le rendre plus robuste (et plus rapide), j'ai créé une référence de table :::load_:myTable à l'intérieur de FUNC et utilisé dt=:::load_:myTable au lieu de l'approche originale via la table de données actuelle() .
Intéressant:
L'approche via :::load_:myTable fonctionne sans wait(1).
Cela signifie que je peux déjà communiquer avec la nouvelle table avant qu'elle n'obtienne la table de données actuelle() !
donc, cela vaut peut-être la peine d'étudier la rapidité avec laquelle les tables de données obtiennent la table de données actuelle ()
... et pourquoi il y a des différences.
Re : exécuter le script de la tableRevenons au début de la discussion - la différence entre l'icône de lecture verte et le bouton "exécuter" de la fenêtre d'édition :
@Byron_JMP a écrit :
Ils font généralement la même chose.
La petite flèche verte est plus rapide, un clic.
: )
le problème se résume à la constatation qu’il n’y a pas UNE table de données actuelle bien définie () !
En utilisant le bouton vert play et en vérifiant les fenêtres de résultats, on peut voir la séquence suivante :
1) le complément ouvre le test et signale que la table de données actuelle a été modifiée en test
2) la table principale pense toujours que check_current_data_table est la table de données actuelle (!!!)
3) Après wait(0), il sait mieux et renvoie test .
D'un autre côté - si le script est démarré via le bouton RUN dans la fenêtre d'édition - les 3 fenêtres de résultats affichent le même tableau que les données actuelles table() .
scénario principal :
Names Default To Here( 1 );
Main Menu( "load_" );
win = new window("1 ",Text Box ("main table (1):\!n" ||
(current data table() << get name())));
wait(1);
win = new window("2 ",Text Box ("main table (2):\!n" ||
(current data table() << get name())));charger_:
Names Default To Here( 1 );
dt = open("C:\temp\test.csv");
Caption( {100, 200}, "postprocessing ...");
win = new window("addIn", text box("inside the addin:\!n" ||(current data table()<< get name())));
// win << moveWindow( 100, 100 );
Caption( remove );
En creusant plus profondément, on découvre que de minuscules détails comme l'activation du << moveWindow à l'intérieur du AddIn ou la désactivation de l'une des commandes de légende ont un effet sur le comportement.
Re : exécuter le script de la tableD'ailleurs, même problème :
il n'y a pas UNE table de données actuelle bien définie () !
était également le problème qui a déclenché ce message : ThisDataTable() ?
avec le même bug corrigé :
ajouter attendre ( 0 )
devant
dt = table de données actuelle () !