sélectionner la table de données actuelleBonjour,
J'utilise un petit jmp_addin pour ajouter des informations sur les limites de spécifications aux colonnes sélectionnées.Quoi qu'il en soit, le problème que je rencontre est que chaque fois que je l'exécute, il récupère toujours la dernière table de données ouverte, même si j'exécute le complément à partir d'une autre fenêtre... existe-t-il un moyen de mettre en évidence le jmp_addin que je j'essaie d'exécuter un script à partir de la table de données sélectionnée ?Je pensais que currentdatatable ferait cela, mais encore une fois, il semble que cela fonctionne toujours sur la dernière table de données ouverte, et parfois je dois modifier/ajouter des spécifications à une table déjà ouverte...
Merci d'avance!
dt = currentdatatable();
table=list("Spec1", "Spec2", "Spec3" );
r = Column Dialog(
Spec = Col List( "Columns to add Spec" ),
v list ("Select Product Spec Table", rb = Combo Box( table()))
);
dtedc = open("C:\myData\ADDIN\Spec Limit\"||table[r["rb"]]||".jmp",invisible);
for ( i=1, i<=N Items(r["Spec"]),i++,
for (j=1, j<= nrows(dtedc), j++,
if(as Name(r["Spec"]) == as Name(dtedc:Parameter),
Eval(
Substitute(
Expr(
Column(dt, r["Spec"]) << set property("spec limits",
{LSL( l), Target( t ), USL( u ), Show Limits(1)}
)
),
Expr( l ), dtedc:LSL,
Expr( t ), dtedc:Target,
Expr( u ), dtedc:USL
)
);
);
);
);
close(dtedc, nosave);
Re : sélectionner la table de données actuelleSi vous placez la définition de la fonction Choose_data_table en haut de votre code, cela fonctionnera.
Re : sélectionner la table de données actuelleOuais, ça marche. J'espérais juste une méthode qui inciterait les utilisateurs à sélectionner une table, car nous en avons souvent plusieurs ouvertes en même temps. Et compter sur la connaissance des différents utilisateurs pour leur tableau de données actuel n'a pas bien fonctionné dans le passé. J'espérais juste avoir une méthode pour inviter les utilisateurs à préciser. Mais cela devra suffire.
Re : sélectionner la table de données actuelleQuand j'ai vu la ligne
dt = choose_data_table();
J'ai supposé que vous aviez une fonction quelque part plus tôt dans votre code qui vous permettait de choisir la table de données sur laquelle exécuter.Mais si ce n’est pas le cas, je vous suggère de modifier la ligne comme suit :
dt = current data table();
et essaye d'exécuter ton code
Re : sélectionner la table de données actuelle@txnelson
Merci de demander. Je n'avais pas pensé à vérifier le journal. Ça dit:
Nom non résolu : Choose_data_table lors de l'accès ou de l'évaluation de 'choose_data_table' , Choose_data_table() /*###*/
Dans le script suivant, erreur marquée par /*###*/
dt = choisir_data_table() /*###*/;
Afficher( dt );
dt << Sélectionner Où ( :Pad Summary == "Surcharge" );
dt << Couleurs( 22 );
dt << Marqueurs( 11 );
dt << Select Where( :Pad Summary == "Curve Error" );
dt << Couleurs( 27 );
dt << Marqueurs( 2 );
dt << Sélectionner Où ( :Pad Summary == "Détecté" );
dt << Couleurs( 4 );
dt << Marqueurs( 12 );
dt << Sélectionner où ( :Pad Summary == "Position Misalign" );
dt << Couleurs( 3 );
dt << Marqueurs( 2 );
dt << Select Where( :Pad Summary == "Négatif (avec désalignement)" );
dt << Couleurs( 1 );
dt << Marqueurs( 2 );
dt << Sélectionner Où ( :Pad Summary == "Negative" );
dt << Couleurs( 1 );
dt << Marqueurs ( 0 );
dt << Sélectionner Où ( :Pad Summary == "Déconnecter" );
dt << Couleurs( 0 );
dt << Marqueurs( 9 );
dt << Sélectionner où ( :Pad Summary == "High CP Current" );
dt << Couleurs( 56 );
dt << Marqueurs( 24 );
dt << Select Where( :Run Status == "Invalid" );
dt << Marqueurs( 4 );Re : sélectionner la table de données actuellequelles erreurs obtenez-vous dans le journal ?
Re : sélectionner la table de données actuelleOuais, je vais essayer. Désolé, je suis assez nouveau et je ne suis pas formellement formé aux scripts, ce qui est probablement évident. J'ai ajouté le sélecteur de table de données dans ce script plutôt que d'utiliser :
dt = Table de données actuelle ();
et m'assurer que le tableau de données actuel était le tableau que je voulais reformater. Lorsque j'ai implémenté pour la première fois la fonction Choisir une table de données, cela a fonctionné à merveille et a créé une invite à partir de laquelle sélectionner la table souhaitée. Je l'ai également envoyé à un collègue pour qu'il l'utilise, et cela n'a pas fonctionné pour lui, malgré la vérification que le script était inchangé. J'ai ouvert le script enregistré et cela n'a pas fonctionné pour moi non plus. J'ai donc alterné entre les méthodes de formatage précédentes et je suis revenu à la méthode de choix de la table de données et cela a fonctionné à nouveau. Plus tard, ce n’était plus le cas.
Je n'ai pas vraiment de bonne explication technique pour l'incohérence, ni pour ce qui a changé entre les tentatives réussies et infructueuses. Pour autant que je sache, rien de spécifique. Je pirate ces choses ensemble, donc il me manque certainement certains principes fondamentaux, comme l'effacement ou la désignation de préférences ou de symboles. Peut-être que le problème dépasse le cadre d'un court message sur le forum ?
Merci de toute façon
Re : sélectionner la table de données actuelleJe pense que nous aurons besoin de plus d'informations sur ce que signifie « travailler de manière incohérente ». Pouvez-vous fournir plus de détails ?
Re : sélectionner la table de données actuelleSalut @Jeff_Perkinson ,
J'essaie de l'utiliser dans un module assez simple qui formate les marqueurs de données. Cela a très bien fonctionné lorsque j'ai initialement défini le script, mais depuis, cela fonctionne de manière incohérente. Y a-t-il des idées pour lesquelles il en serait ainsi ? Les titres et valeurs des colonnes sont fiables.
dt=choose_data_table();
show(dt);
dt << Select Where( :Pad Summary == "Overload" );
dt << Colors( 22 );
dt << Markers( 11 );
dt << Select Where( :Pad Summary == "Curve Error" );
dt << Colors( 27 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Detected" );
dt << Colors( 4 );
dt << Markers( 12 );
dt << Select Where( :Pad Summary == "Position Misalign" );
dt << Colors( 3 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negative (w/ Misalign)" );
dt << Colors( 1 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negative" );
dt << Colors( 1 );
dt << Markers( 0 );
dt << Select Where( :Pad Summary == "Disconnect" );
dt << Colors( 0 );
dt << Markers( 9 );
dt << Select Where( :Pad Summary == "High CP Current" );
dt << Colors( 56 );
dt << Markers( 24 );
Merci
Re : sélectionner la table de données actuelleJe viens de tomber sur cette vieille question qui, malheureusement, n'a jamais reçu de réponse.
Tableau de données actuel() doit renvoyer une référence à la fenêtre de la table de données active. Je ne sais pas pourquoi ce n'est pas dans votre cas.
Cependant, une méthode plus fiable consiste à inviter l’utilisateur à faire un choix parmi les tableaux de données ouvertes.
Voici une petite fonction qui affiche une liste de tables de données et renvoie le choix fait par l'utilisateur.
choose_data_table=function({},
list = {};
For( i = 1, i <= N Table(), i++,
list[i] = Data Table( i ) << get name
);
win = New Window( "Select a data table", << Modal,
hb = H List Box(
Panel Box( "Choose a data table",
dt = List Box(
list,
max selected( 1 ),
chosen = Data Table( (dt << get selected)[1] );
show (chosen);
)
),
)
);
chosen);
Utilisez-le comme ceci :
dt=choose_data_table();
show(dt);