Exécuter un script JMP sans table associéeJ'ai un script JMP qui lance une requête SQL, puis traite la table de données qui en résulte.Ensuite, il effectue une série de manipulations de colonnes et d’autres opérations sur les tables.Lorsque j'exécute le script dans le générateur JSL, il répertorie toujours une table de données dans la case à côté du bouton "lire".Même si j'ai "NamesDefaultToHere(1)", cela modifiera souvent les colonnes du tableau répertorié dans la zone de la fenêtre JSL (si elles ont les mêmes noms de colonnes) - au lieu du tableau généré par la requête SQL.Existe-t-il une ligne au script que je peux ajouter pour empêcher ce comportement ?Par exemple, avec le script ci-dessous - si la table existante a une colonne "DIEID", elle sera modifiée et non la table de données SQL créée par le script.S'il n'y a aucune table ouverte, cela fonctionne correctement.
Merci et faites-moi savoir si vous avez besoin d'informations supplémentaires.
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
dtIGNITE << show window(1);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));
Re : Exécuter un script JMP sans table associéeEntre ma faute de frappe de données à ce jour et une partie de ma propre confusion sur la portée/variable, votre solution a fonctionné.Vous trouverez ci-dessous le script final tel qu'implémenté.
Merci pour votre aide!
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
Current Data Table (dtIGNITE);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));Re : Exécuter un script JMP sans table associéePour spécifier que la table dtIGNITE soit actuelle, la syntaxe serait :
Current Data Table( dtINGNITE );
Étant donné que la table Baselines-EXT a les mêmes colonnes de nom, essayez d'ajouter la référence de colonne facultative à vos fonctions Column().Cela indique à JMP quelle table consulter pour les colonnes DIEID et FCID.
Column( dtIGNITE, "DIEID" ) << Formula( <FORMULA> );</FORMULA>
Alternativement, vous pouvez combiner les lignes New Column() et Formula().
J'espère que cela pourra aider!
Re : Exécuter un script JMP sans table associéeVous pourriez envisager :
dt1 = New Table( "dtIgnite" );
query << Run Foreground( UpdateTable( dt1 ) );
Wait(0);
dt1 << New Column(...
Cela pourrait donner des résultats plus cohérents en attribuant le handle à la table, puis en le mettant à jour.
Re : Exécuter un script JMP sans table associéeJ'ai joint une capture d'écran qui peut vous aider.
J'exécute généralement mes scripts depuis la fenêtre de l'éditeur.dtIGNITE est la table générée par la table SQL, mais lorsque j'exécute le script, la table "Baselines-Ext" sera modifiée puisqu'elle est répertoriée comme table de données actuelle dans l'interface graphique.
J'ai ajouté les lignes :
dtIGNITE << Set Name ("RUNS");
Current Date Table = Data Table("RUNS");
à mon jsl, mais cela n'a pas résolu le problème.
Si aucune autre table n'est ouverte dans JMP, le script fonctionne parfaitement tel qu'il est écrit.
J'essaierai l'option de débogage et mettrai à jour si je trouve quelque chose.

Re : Exécuter un script JMP sans table associée@PChemMan ,
Je ne suis pas sûr de suivre correctement votre question. Veuillez fournir une explication plus détaillée dans votre réponse si ce que j'essaie ici ne vous aide pas.
Mais, en faisant quelques hypothèses, voyons que vous avez 2 tables - 1 table s'appelle "dtIGNITE", l'autre, appelons-la "SQLTable" pour l'instant. Vous craignez que votre script apporte des modifications à la table dtIGNITE au lieu de SQLTable ?
Si tel est le cas, pouvez-vous essayer d'ajouter le morceau de code suivant
Current Data Table = Data Table("SQLTable"); avant toute manipulation. Cela devrait faire de la table générée SQL la table actuelle.