Ouverture de plusieurs DataTables<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je souhaite donc créer une application qui invitera l'utilisateur à spécifier un certain nombre de tables de données après quoi l'utilisateur pourra choisir les tables correspondantes. Je voudrais également ajouter des colonnes à chacun de ces tableaux. Je suis encore nouveau sur jmp/jsl mais ci-dessous se trouve mon script qui bien sûr ne fonctionne pas, toute aide est bien appréciée ;
Nouvelle fenêtre( "Nombre de tables de données",
<
Zone de texte( "Nombre de tables de données" ),
variablebox = Zone d'édition de numéro (),
Boîte à boutons ("OK"),
Boîte à boutons ("Annuler")
);
N = Boîte de variables << obtenir ;
Pour( i = 1, i <= N Items( dt ), i++,
dt = Ouvert()
Noms par défaut ici (1);
dt=Tableau de données actuel (i);
dt << Nouvelle Colonne("ColonneA", Numérique, continue, Format("Meilleur", 5));
dt << Nouvelle Colonne("ColonneB", Numérique, continue, Format("Meilleur", 5));
);
PS : je sais que le script pour ajouter des colonnes supplémentaires doit aller dans la boucle For d'une manière ou d'une autre, mais si je peux même ouvrir les tables de données, alors comment puis-je même ajouter les colonnes.
PMroz jordanhiller@jmp Chris.kirchberg Champs CHF MarkBailey
Re : Ouverture de plusieurs DataTablesOh wow ça marche. Merci!!!
Re : Ouverture de plusieurs DataTablesBien sûr! Merci beaucoup de m'avoir redressé, Mélanie. . .
Quiconque lit ce fil doit également noter que (contrairement aux commentaires dans le code) le mot-clé « multiple » est respecté par OS/X et Windows.
Re : Ouverture de plusieurs DataTablesL'argument multiple de PickFile() est un mot-clé et non un booléen. Essaye ça:
Choisir un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"$sample_data" , // Dossier initial
{ "Fichiers JMP|jmp;jsl;jrn" , "Tous les fichiers |*" } , // Liste des filtres de fichiers à appliquer (ignorés par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Indicateur de sauvegarde - Spécifiez une fenêtre « Enregistrer » ou « Ouvrir ». 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 plusieurs fichiers (ignoré par OS/X)
) ;
Notez que pour utiliser l'argument multiple, tous les arguments précédents doivent être spécifiés - vous ne pouvez pas omettre les 2 drapeaux et le fichier par défaut, par exemple.
Re : Ouverture de plusieurs DataTablesHmmm. Je vais demander à R&D, car j'ai l'impression que cela devrait fonctionner.
Il est toujours préférable d'utiliser les fonctions intégrées si possible, mais vous pouvez toujours faire quelque chose comme :
NomsDefaultToHere ( 1 ) ;
dir = ChoisirRépertoire ( "Déplacez-vous vers le dossier contenant vos fichiers" , "$BUREAU" ) ;
maintenant = Nouvelle fenetre ( "Ouvrir plusieurs fichiers" ,
Panneau électrique ( "Sélectionnez un ou plusieurs fichiers" ,
kg = Zone de liste ( FichiersDansRépertoire ( dir )) ,
Boîte de programmation ( NCol ( 2 ) ,
Boîte à boutons ( "D'ACCORD" , OKScript ) ,
Boîte à boutons ( "Annuler" , maintenant << Fermer la fenêtre )
)
)
) ;
OKScript =
Expr (
maintenant << Fermer la fenêtre ;
des dossiers = kg << obtenirSélectionné ;
Pour ( F = 1 , F <= NArticles ( des dossiers ) , F ++, Ouvrir ( dir || "/" || des dossiers [ F ])) ;
) ;
Re : Ouverture de plusieurs DataTablesMerci Ian, vous avez été vraiment utile. J'ai testé le code ci-dessus et cela fonctionne également sous Windows. J'ai également pu modifier et intégrer le code dans mon travail. Cependant, je ne peux ouvrir qu'un seul fichier à la fois. D'après votre explication, l'ajout de ce dernier dans la fonction Choisir un fichier devrait permettre d'ouvrir plusieurs fichiers mais cela ne fonctionne pas sur mon ordinateur (Windows d'ailleurs).Existe-t-il un moyen de contourner ce problème afin de pouvoir ouvrir plusieurs fichiers en même temps ? Merci
Re : Ouverture de plusieurs DataTablesAlors maintenant, je comprends que votre question concerne la sélection des fichiers à ouvrir. . .
Il semble que 'PickFile()' soit déjà suffisamment flexible pour faire ce dont vous avez besoin (voir 'Aide > Index de script').
Dans la mesure où il doit interagir avec le système d'exploitation, vous pouvez vous attendre à une légère différence entre Windows et OS/X, et il semble que ce soit le cas ici. Malheureusement, je n'ai pas de machine Windows sur laquelle tester le code ci-dessous (je suppose également que pour plusieurs sélections, « PickFile() » renverra effectivement une liste) :
Noms par défaut ici ( 1 ) ;
// Utilisez 'PickFile()' pour obtenir une liste de fichiers à ouvrir (Windows uniquement)
liste de fichiers =
Choisir un fichier (
"Sélectionnez un ou plusieurs fichiers" , // Rapide
"$BUREAU" , // Dossier initial
{ "Fichiers JMP|jmp;jsl;jrn" , "Tous les fichiers |*" } , // Liste des filtres de fichiers à appliquer (ignorés par OS/X)
1 , // Filtre de fichier initial à appliquer (index de l'élément dans la liste ci-dessus)
0 , // Indicateur de sauvegarde - Spécifiez une fenêtre « Enregistrer » ou « Ouvrir ». Définissez une valeur de 1 ou 0 respectivement.
Vide () , // Fichier par défaut
1 // Multiple - Si 'Save Flag' = 0, l'utilisation d'une valeur de 1 permet d'ouvrir plusieurs fichiers (ignoré par OS/X)
) ;
// Si un seul fichier est sélectionné, fileList ne sera pas une liste, nous devons donc le construire nous-mêmes
si ( ! EstListe ( liste de fichiers ) , liste de fichiers = Liste d'évaluation ({ liste de fichiers })) ;
// Ouvrez les fichiers et stockez leurs noms de table JMP correspondants
noms de table = {} ;
pour ( F = 1 , F <= NArticles ( liste de fichiers ) , F ++,
dt = Ouvrir ( liste de fichiers [ F ]) ;
Insérer dans ( noms de table , dt << obtenirNom ) ;
) ;
Re : Ouverture de plusieurs DataTablesBonjour Ian,
Merci pour votre retour, je ferai de mon mieux pour mieux expliquer. Je veux que le script demande à un utilisateur le nombre de tables de données à ouvrir, puis invite l'utilisateur à sélectionner les tables à ouvrir correspondant au numéro demandé précédemment.L'algorithme ressemblera à ci-dessous :
- Script de lancement
- Il est demandé à l'utilisateur combien de tables de données ouvrir (une fenêtre modale facilitera les choses) ex : l'utilisateur tape par exemple 3
- L'utilisateur est ensuite invité à choisir les 3 tables de données qu'il préfère
- Ajoutez "Colonne A" et "Colonne B" à chacun des 3 tableaux de données
J'espère que cela aidera à mieux clarifier le problème. Encore merci!
Re : Ouverture de plusieurs DataTablesJe pense que vous devez donner un peu plus de détails sur ce que vous recherchez, s'il vous plaît.
En supposant que pour la première étape vous souhaitiez autoriser les sélections à partir des tables ouvertes (plutôt que les sélections des tables à ouvrir), jetez un œil à :
NomsDefaultToHere ( 1 ) ;
// Affiche les tables ouvertes dans la session et laisse l'utilisateur en sélectionner quelques-unes
tables ouvertes = {} ;
Pour ( t = 1 , t <= NTable () , t ++, Insérer dans ( tables ouvertes , Table de données ( t ) << obtenirNom )) ;
maintenant =
Nouvelle fenetre ( "Sélectionnez les tables dont vous avez besoin" ,
kg = Zone de liste ( tables ouvertes ) ,
Boîte de programmation ( NCol ( 2 ) , Boîte à boutons ( "D'ACCORD" , OKscript ) , Boîte à boutons ( "Annuler" , maintenant << Fermer la fenêtre ))
) ;
// Faire quelque chose avec les tables sélectionnées (dans ce cas, imprimer simplement)
OKScript =
Expr (
maintenant << Fermer la fenêtre ;
Tableaux sélectionnés = kg << obtenirSélectionné ;
Effacer le journal () ;
si ( NArticles ( Tableaux sélectionnés ) > 0 ,
Pour ( t = 1 , t <= NArticles ( Tableaux sélectionnés ) , t ++,
Imprimer ( "Tableau " || Tableaux sélectionnés [ t ] || " sélectionné." )
) ,
Imprimer ( "Aucune table sélectionnée." )
) ;
) ;