Boîte de dialogue Colonne - copie également les propriétés de la colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un script qui ouvre plusieurs tables de données et crée de nouvelles colonnes dans ces tables de données. Est-il possible de créer un script pour une boîte de copieur de colonnes qui affiche toutes les colonnes de chaque table de données ouverte ? afin que je puisse sélectionner et copier les seules colonnes que je veux avec leurs propriétés ?
Mon code actuel essaie de concaténer les tables de données dans une nouvelle table avant de copier les colonnes, mais il ressemble JMP ne me permettait pas de concaténer plus de deux tables de données en même temps.
Vous trouverez ci-dessous un résumé du code que j'ai écrit pour le rendre plus facile à modifier. Merci.
Noms par défaut ici ( 1 ) ;
// Utilisez 'PickFile()' pour obtenir une liste de fichiers à ouvrir (Windows uniquement)
liste de fichiers = Choisissez un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"$BUREAU" , // Dossier initial
{ "Fichiers JMP|jmp;jsl;jrn;csv" , "Tous les fichiers|*" } , // Liste des filtres de fichiers à appliquer (ignoré par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Save flag - Spécifiez une fenêtre 'Save' ou 'Open'. Définissez une valeur de 1 ou 0 respectivement.
Vide () , // Fichier par défaut
plusieurs // Multiple - Si 'Save Flag' = 0, l'utilisation d'une valeur de 1 permet d'ouvrir plus d'un fichier (ignoré par OS/X)
) ;
// Si un seul fichier est sélectionné, fileList ne sera pas une liste, nous devons donc la construire nous-mêmes
Si ( ! Est une liste ( liste de fichiers ) ,
liste de fichiers = Liste d'évaluation ( { liste de fichiers } )
) ;
// Ouvre les fichiers et stocke leurs noms de table JMP correspondants
TableNames = {} ;
Pour ( F = 1 , F <= N articles ( liste de fichiers ) , F ++,
dt = Ouvrir ( liste de fichiers [ F ] ) ;
Insérer dans ( TableNames , dt << obtenirNom ) ;
) ;
dt = Nouveau tableau ( "Chien H concaténé" ) ;
// Créer un copieur de colonnes pour copier des fichiers
dt = Tableau de données actuel () ;
col_dlg = nouvelle fenetre ( « Copieur de colonnes » ,
panneau électrique ( "Sélectionnez quatre colonnes pour créer un nouveau tableau avec :" ,
col_clist = collistbox ( tous , largeur ( 200 ) , maximum sélectionné ( 4 )) ,
) ,
boîte à boutons ( "D'ACCORD" ,
liste_colonne_sélectionnée = col_clist << être sélectionné ;
col1 = liste_colonne_sélectionnée [ 1 ] ;
col2 = liste_colonne_sélectionnée [ 2 ] ;
col3 = liste_colonne_sélectionnée [ 3 ] ;
col4 = liste_colonne_sélectionnée [ 4 ] ;
// Crée une nouvelle table en utilisant uniquement les deux colonnes sélectionnées
dt2 = dt << Sous-ensemble ( Colonnes ( colonne ( dt , col1 ) , colonne ( dt , col2 ) , colonne ( dt , col3 ) , colonne ( dt , col4 ) ) ) ;
col_dlg << Fermer la fenêtre ;
)
) ;
Table de données ajoutée.
Le message a été modifié par : Luqman Olawin
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneBonjour Jim,
J'ai essayé de le remplacer par "nom". J'ai commenté la fonction "Par colonne correspondante" et cela semble fonctionner pour moi. Merci beaucoup pour l'aide, j'apprécie vraiment !
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneL'erreur indique qu'il n'y a pas de colonne nommée "Wafer ID in Lot ID".C'est ce qu'est la colonne correspondante dans mes tables de données.Je crois que le nom de la colonne sur laquelle vous faites correspondre s'appelle "nom".Remplacez les 2 références de "Wafer ID in Lot ID" par "name"
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneVoici l'erreur que j'obtiens de la fenêtre du journal. J'ai édité le message pour joindre les tables de données et elles ont toutes les mêmes colonnes avec seulement des noms de table différents.J'aimerais gardez les mêmes colonnes nommées séparées afin que lorsque le copieur de colonne apparaît, je puisse sélectionner les colonnes que je souhaite copier. Merci.
L'accès à la table de données délimitée nécessite une colonne de table de données ou une variable dans l'accès ou l'évaluation de 'dt:Wafer ID in lot ID' , dt:Wafer ID in lot ID/*###*/
Dans le script suivant, erreur marquée par /*###*/
Noms par défaut à ici( 1 );
fileList = Choisir un fichier(
"Sélectionner un ou plusieurs fichiers",
"$DESKTOP",
{"Fichiers JMP|jmp;jsl;jrn;csv", "Tous les fichiers|*"},
1,
0,
Vide(),
plusieurs
);
Si( !Est Liste( listeListefichiers ),
fileList = Eval List( {fileList} )
);
tableNames = {} ;
For( f = 1, f <= N Items( fileList ), f++,
dttemp = Ouvrir( listeFichiers);
Insert Into( tableNames, dttemp << getName );
Si( f == 1,
dt = dttemp,
dtx = dt << Join(
Avec( dttemp ),
Par colonnes correspondantes(
dt : ID de plaquette dans l'ID de lot/*###*/ = dttemp : ID de plaquette dans l'ID de lot
),
Conserver l'ordre de la table principale(),
Nom de la table de sortie( "H Watch concaténé" )
);
Close( dttemp, nosave );
Fermer( dt, nosave );
dt = dtx ;
);
);
dt = table de données actuelle();
col_dlg = Nouvelle fenêtre( "Copieur de colonnes",
Panel Box( "Sélectionnez quatre colonnes pour créer un nouveau tableau avec :",
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
),
Boîte à boutons( "OK",
select_column_list = col_clist << getselected;
col1 = liste_colonne_sélectionnée[1] ;
col2 = liste_colonne_sélectionnée[2] ;
col3 = liste_colonne_sélectionnée[3] ;
col4 = liste_colonne_sélectionnée[4] ;
dt2 = dt << Sous-ensemble(
Colonnes(
Colonne( dt, col1 ),
Colonne( dt, col2 ),
Colonne( dt, col3 ),
Colonne( dt, col4 )
)
);
col_dlg << fermer la fenêtre ;
)
);
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneParlez-moi des différents fichiers. Ont-ils des colonnes qui portent les mêmes noms ? Toutes les colonnes portant le même nom se replieront les unes sur les autres dans la jointure, à l'aide de l'instruction "fusionner les colonnes de même nom (1)".Si vous comptez sur la jointure pour séparer les mêmes colonnes nommées, la section de code qui effectue la jointure devra reconnaître que la colonne appelée "name" dans la table de données jointe ne sera plus nommée "name", mais plutôt "name of " et cela devra être géré dans le script pour permettre la jointure.
La colonne "nom" de vos tableaux de données est-elle un identifiant unique pour chaque ligne ?
Pouvez-vous me dire quels messages d'erreur sont affichés dans le journal JMP (View==>Log) ?
Voici le code qui fonctionne sans erreur sur mon système.Veuillez noter que le répertoire que j'ouvre pour trouver les fichiers d'entrée, ainsi que la colonne utilisée pour la correspondance dans la jointure, est différent de votre code.A part ça, ça devrait être le même code.Ce code fonctionne sans erreur. Veuillez noter que l'hypothèse pour que ce code fonctionne est qu'à l'exception de la colonne utilisée pour la correspondance (" ID de plaquette dans l'ID de lot").
Noms par défaut ici ( 1 ) ;
liste de fichiers = Choisissez un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"c:\users\txjim\documents\multifiles" , // Dossier initial
{ "Fichiers JMP|jmp;jsl;jrn;csv" , "Tous les fichiers|*" } , // Liste des filtres de fichiers à appliquer (ignoré par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Save flag - Spécifiez une fenêtre 'Save' ou 'Open'. Définissez une valeur de 1 ou 0 respectivement.
Vide () , // Fichier par défaut
plusieurs // Multiple - permet d'ouvrir plus d'un fichier (ignoré par OS/X)
) ;
Si ( ! Est une liste ( liste de fichiers ) ,
liste de fichiers = Liste d'évaluation ( {listefichier} )
) ;
TableNames = {} ;
Pour ( F = 1 , F <= N articles ( liste de fichiers ) , F ++,
dttemp = Ouvrir ( liste de fichiers);
Insérer dans ( nomstables , dttemp << obtenirNom ) ;
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Rejoindre (
Avec( dttemp ) ,
Par colonnes correspondantes ( dt : Nom ( "ID de plaquette dans l'ID de lot" ) = dttemp : nom ( "ID de plaquette dans l'ID de lot" ) ) ,
Conserver l'ordre de la table principale() ,
fusionner les colonnes de même nom ( 1 ) ,
Nom de la table de sortie( "Montre concaténée H" )
) ;
Fermer ( dttemp , nosave ) ;
Fermer (dt , nosave ) ;
dt = dtx ;
) ;
) ;
dt = Tableau de données actuel () ;
col_dlg = Nouvelle fenetre ( « Copieur de colonnes » ,
Panneau électrique ( "Sélectionnez quatre colonnes pour créer un nouveau tableau avec :" , col_clist = Zone de liste Col ( tous , largeur( 200 ) , maximum sélectionné( 4 ) ) , ) ,
Boîte à boutons ( "D'ACCORD" ,
liste_colonne_sélectionnée = col_clist << se sélectionne ;
col1 = liste_colonne_sélectionnée[ 1 ] ;
col2 = liste_colonne_sélectionnée[ 2 ] ;
col3 = liste_colonne_sélectionnée[ 3 ] ;
col4 = liste_colonne_sélectionnée[ 4 ] ;
dt2 = dt << Sous-ensemble ( Colonnes( Colonne (dt , col1 ) , Colonne (dt , col2 ) , Colonne (dt , col3 ) , Colonne (dt , col4 ) ) ) ;
col_dlg << Fermer la fenêtre;
) ;
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneNe fonctionne pas non plus. Le changement ne rejoint même pas les tables.
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneLe problème est que JMP renomme les colonnes lorsqu'il joint des tables, lorsque les tables ont des colonnes portant le même nom.Ainsi, votre colonne appelée "nom" a été modifiée après la première jointure.Donc changez la ligne :
dtx = dt << Rejoindre ( Avec ( dttemp ) , Par colonnes correspondantes ( nom = nom ) , Conserver l'ordre de la table principale () , Nom de la table de sortie ( "Montre concaténée H" ) ) ;
pour
dtx = dt << Rejoindre ( Avec ( dttemp ) , Par colonnes correspondantes ( nom = nom ) , Conserver l'ordre de la table principale () , Nom de la table de sortie ( "Montre concaténée H" ), fusionner les colonnes de même nom(1) ) ;
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneMerci Jim. Le timing n'a pas résolu le problème (j'ai aussi essayé de l'augmenter). Cependant, la fonction de fermeture fonctionne bien. Le seul problème maintenant est que le 3ème fichier s'ouvre tout seul sans se joindre à la dernière table jointe. J'ai essayé différentes méthodes depuis hier mais ça ne marche pas.
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneLe code est destiné à ouvrir la première table de données, puis à ouvrir la deuxième table, à créer une nouvelle table de données jointe, à fermer la table d'origine et la table qui vient d'être ouverte, en conservant la table nouvellement jointe.Ouvrez ensuite la troisième table. Joignez-le à la table jointe précédemment, en créant une nouvelle table de données.Fermez ensuite l'ancienne table jointe et la table nouvellement ouverte, en conservant la dernière table jointe ..... etc.
Il peut y avoir un problème de synchronisation, et il y a un problème que vous avez supprimé l'une des fonctions de fermeture.Veuillez remplacer le code suivant :
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Rejoindre ( Avec ( dttemp ) , Par colonnes correspondantes ( nom = nom ) , Conserver l'ordre de la table principale () , Nom de la table de sortie ( "Montre concaténée H" ) ) ;
attendre(1);
Fermer ( dttemp , nosave ) ;
fermer (dt,nosave);
dt = dtx ;
) ;
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneBonjour Jim,
Merci pour votre aide, j'ai compris après plusieurs essais. J'aurais dû répondre à ce fil. Le ci-dessous était le code que j'ai utilisé. Le problème que j'ai maintenant est que je ne peux pas joindre plus de 2 tables ensemble. Chaque fois que j'essaie de joindre 3 tables, cela montre 2 tables concaténées différentes au lieu d'une. Le premier montre les tables de données concaténées 1 et 2 et le second montre les tables de données concaténées 1 et 3.
Sans une table de données concaténées, il est très difficile d'utiliser le copieur de colonnes. Je pensais donc à la place, est-il possible d'utiliser le copieur de colonnes pour qu'il affiche toutes les colonnes de plusieurs tables de données?
Noms par défaut ici ( 1 ) ;
// Utilisez 'PickFile()' pour obtenir une liste de fichiers à ouvrir (Windows uniquement)
liste de fichiers = Choisissez un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"$BUREAU" , // Dossier initial
{ "Fichiers JMP|jmp;jsl;jrn;csv" , "Tous les fichiers|*" } , // Liste des filtres de fichiers à appliquer (ignoré par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Save flag - Spécifiez une fenêtre 'Save' ou 'Open'. Définissez une valeur de 1 ou 0 respectivement.
Vide () , // Fichier par défaut
plusieurs // Multiple - permet d'ouvrir plus d'un fichier (ignoré par OS/X)
) ;
// Si un seul fichier est sélectionné, fileList ne sera pas une liste, nous devons donc la construire nous-mêmes
Si ( ! Est une liste ( liste de fichiers ) ,
liste de fichiers = Liste d'évaluation ( { liste de fichiers } )
) ;
// Ouvre les fichiers et stocke leurs noms de table JMP correspondants
TableNames = {} ;
Pour ( F = 1 , F <= N articles ( liste de fichiers ) , F ++,
dttemp = Ouvrir ( liste de fichiers [ F ] ) ;
Insérer dans ( TableNames , dttemp << obtenirNom ) ;
// Ajoute les tables de données ensemble
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Rejoindre ( Avec ( dttemp ) , Par numéro de ligne , Par colonnes correspondantes ( nom = nom ) , Conserver l'ordre de la table principale () , Nom de la table de sortie ( "Montre concaténée H" ) ) ;
Fermer ( dttemp , nosave ) ;
dt = dtx ;
) ;
) ;
dt = Tableau de données actuel () ;
// Créer un copieur de colonnes pour copier des fichiers
col_dlg = Nouvelle fenetre ( « Copieur de colonnes » ,
Panneau électrique ( "Sélectionnez quatre colonnes pour créer un nouveau tableau avec :" ,
col_clist = Zone de liste Col ( tous , largeur ( 200 ) , maximum sélectionné ( 4 ) ) ,
) ,
Boîte à boutons ( "D'ACCORD" ,
liste_colonne_sélectionnée = col_clist << être sélectionné ;
col1 = liste_colonne_sélectionnée [ 1 ] ;
col2 = liste_colonne_sélectionnée [ 2 ] ;
col3 = liste_colonne_sélectionnée [ 3 ] ;
col4 = liste_colonne_sélectionnée [ 4 ] ;
// Crée une nouvelle table en utilisant uniquement les deux colonnes sélectionnées
dt2 = dt << Sous-ensemble ( Colonnes ( Colonne ( dt , col1 ) , Colonne ( dt , col2 ) , Colonne ( dt , col3 ) , Colonne ( dt , col4 ) ) ) ;
col_dlg << Fermer la fenêtre ;
)
) ;
Re : boîte de dialogue Colonne - copie également les propriétés de la colonneDans la dernière pose de cette question, vous avez indiqué que vous ne vouliez pas concaténer les tables ensemble, mais que vous vouliez les joindre horizontalement.Vous trouverez ci-dessous une refonte du script que je vous ai envoyé précédemment, mais cette fois, les tables sont jointes horizontalement.
Noms par défaut ici ( 1 ) ;
// Utilisez 'PickFile()' pour obtenir une liste de fichiers à ouvrir (Windows uniquement)
liste de fichiers = Choisissez un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"$BUREAU" , // Dossier initial
{ "JMP
Fichiers|jmp;jsl;jrn;csv" , "Tous les fichiers|*" } , // Liste des filtres de fichiers à appliquer (ignoré par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Save flag -Spécifie une fenêtre 'Save' ou 'Open'. Définissez une valeur de 1 ou 0 respectivement.
Vide () , // Fichier par défaut
plusieurs // Multiple - permet d'ouvrir plus d'un fichier (ignoré par OS/X)
) ;
// Si un seul fichier est sélectionné, fileList ne sera pas une liste, nous devons donc la construire nous-mêmes
Si ( ! Est une liste ( liste de fichiers ) ,
liste de fichiers = Liste d'évaluation ( {listefichier} )
) ;
// Ouvre les fichiers et stocke leurs noms de table JMP correspondants
TableNames = {} ;
Pour ( F = 1 , F <= N articles ( liste de fichiers ) , F ++,
dttemp = Ouvrir ( liste de fichiers);
Insérer dans ( nomstables , dtemp << obtenirNom ) ;
// Ajoute les tables de données ensemble
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Rejoindre (Avec(dttemp) , Par numéro de ligne ) ;
Fermer ( dttemp , nosave ) ;
dt = dtx ;
Fermer ( dtx , nosave ) ;
) ;
) ;
// Créer un copieur de colonnes pour copier des fichiers
col_dlg = Nouvelle fenetre ( « Copieur de colonnes » ,
Panneau électrique ( "Sélectionnez quatre
colonnes pour créer une nouvelle table avec :" , col_clist = Zone de liste Col ( tous , largeur( 200 ) , maximum sélectionné( 4 ) ) , ) ,
Boîte à boutons ( "D'ACCORD" ,
liste_colonne_sélectionnée = col_clist << se sélectionne ;
col1 = liste_colonne_sélectionnée[ 1 ] ;
col2 = liste_colonne_sélectionnée[ 2 ] ;
col3 = liste_colonne_sélectionnée[ 3 ] ;
col4 = liste_colonne_sélectionnée[ 4 ] ;
// Crée une nouvelle table en utilisant uniquement les deux colonnes sélectionnées
dt2 = dt << Sous-ensemble ( Colonnes( Colonne (dt , col1 ) , Colonne (dt , col2 ) , Colonne (dt , col3 ) , Colonne (dt , col4 ) ) ) ;
col_dlg << Fermer la fenêtre;
)
) ;