Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle table<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
J'ai un peu de mal à copier des colonnes de plusieurs tables de données dans une nouvelle table vide. Les tables de données à ouvrir ont toutes les mêmes noms de colonne.
Jusqu'à présent, je peux ouvrir plusieurs tables, mais je ne peux copier que les colonnes d'une des dernières tables de données ouvertes.
Voici mon code ci-dessous :
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 ++,
dt = Ouvrir ( liste de fichiers [ F ] ) ;
Insérer dans ( TableNames , dt << obtenirNom ) ;
) ;
// 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 = 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 ;
)
) ;
Remarque : La nouvelle table de données qui est créée est un sous-ensemble de la dernière table de données ouverte à partir des multiples données t capable. J'aimerais pouvoir choisir n'importe quelle copie de n'importe quelle colonne de l'une des tables de données dans la nouvelle. Merci.
Re : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableMerci beaucoup, ça a marché. J'ai pensé que c'était le problème, juste une dernière aide. La concaténation était verticale. J'essaie de concaténer horizontalement la table de données. J'ai donc utilisé "Join" au lieu de "concatener" mais cela ouvre 2 tables de données distinctes au lieu de les combiner.
Re : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableL'erreur .... qui était mon erreur .... est dans la ligne
Insérer dans (tableNames, dt << getName );
La ligne doit lire :
Insert into( tableNames, dttemp << getName );
Re : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableJ'ai vérifié la table de données mais n'en ouvre toujours qu'une. Voici l'erreur que j'ai reçue du journal ci-dessous :
Name Unresolved : dt dans l'accès ou l'évaluation de 'dt' , dt/*###*/
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);
Insérer dans( tableNames, dt/*###*/ <
Si( f == 1,
dt = dttemp,
dt << concaténer( dttemp, ajouter à la première table( 1 ) );
Close( dttemp, nosave );
);
);
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 : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableJ'ai modifié le code, pour lire dans chacun des 4 fichiers, et pour les annexer au premier fichier.Par conséquent, le résultat final devrait être que vous n'avez qu'un seul fichier, mais que toutes les données de chacun des fichiers s'y trouvent.
Je n'ai pas pu tester complètement votre code, il peut donc y avoir un léger problème.Le seul code que j'ai changé était dans la boucle For.Veuillez réexécuter le code, puis regardez dans le journal View==>Log et voyez quelle est l'erreur.En outre, archivez la table de données et vérifiez que toutes les données ont été intégrées à la table de données.
Re : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableBonjour Jim,
Merci pour l'aide mais ça ne marche toujours pas. Lorsque j'exécute le nouveau code cette fois, le copieur de colonne ne s'affiche pas et le seul des fichiers que je souhaite ouvrir s'affiche.
Re : Copier les colonnes, les noms de colonne et le nom de la table dans une nouvelle tableLe code ci-dessous lit dans chaque fichier, puis les concatène dans une table de données, qui est ensuite traitée par votre Column Copier
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 ( {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 , dt << obtenirNom ) ;
// Ajoute les tables de données ensemble
Si ( F == 1 ,
dt = dttemp ,
dt << enchaîner ( dttemp , ajouter au premier tableau( 1 ) ) ;
Fermer ( dttemp , 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 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 ] ;
// 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;
)
) ;