Création de variables à l'exécutionBonjour,
Existe-t-il un moyen de créer des variables au moment de l'exécution (avant d'exécuter l'application, je ne sais pas combien de variables il me faut et leurs types)?
La solution sur laquelle je travaille:
1. L’utilisateur choisira une table de données jmp / excel
2. L’utilisateur choisira les colonnes à utiliser pour filtrer la table (quantité et noms inconnus)
3.L'application créera une liste ou une boîte radio pour chaque colonne choisie et la remplira avec les valeurs distinctes de cette colonne.
4. Une fois que l'utilisateur sélectionne les valeurs à filtrer, l'application exécute le filtrage et renvoie la table filtrée.
Donc, j'ai besoin de créer des variables au moment de l'exécution pour chaque listbox avec un nom méchant, si possible.
Je vous remercie,
À M.
Re: Création de variables à l'exécutionJSL vous autorisera définitivement à créer votre propre version du filtre de données et vous pourrez la présenter sous la forme que vous croyez être la meilleure pour votre environnement. Je vous dirai que tout le traitement des exceptions que vous devrez intégrer rendra la tâche assez complexe. Vous trouverez ci-dessous un script très grossier, qui vous donnera un exemple de création de variables dans un environnement dans lequel l'utilisateur peut sélectionner la table et les colonnes à traiter. J'ai choisi d'utiliser l'exemple de table de données appelé "Big Class", mais toute table fonctionnerait avec le code. Les listes créées appelées "nameList", "handleList" et CNTList enregistrent les colonnes sélectionnées, ainsi que le pointeur sur les zones de liste générées. dans l'une des zones de liste générées. Maintenant, je reconnais clairement que ce n’est là que l’une des directions possibles pour créer l’affichage souhaité. Je vais également réaffirmer que beaucoup de code d'exception, traitant de choses comme, supprimer une colonne sélectionnée sur laquelle filtrer, comment gérer les filtres numériques, sont les sélections à être "Et" ou "Ou" dans leurs comparaisons .... ... tous les éléments qui doivent être traités.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Current Data Table( dt );
CNT = 0;
// Create lists to handle processing
nameList = {};
handleList = {};
CNTList = {};
// Create the new window
nw = New Window( "Example",
V List Box(
Text Box( "Data Table Columns" ),
Spacer Box( size( 0, 10 ) ),
clb = Col List Box(
dt << get name,
all,
max selected( 1 ),
Sel = clb << get selected;
If( N Items( Sel ) > 0,
CNT++;
Insert Into( nameList, Sel[1] );
Eval( Parse( "summarize(dt,bygp=by(:" || Char( Sel[1] ) || "))" ) );
lb = List Box( bygp, Eval( Parse( "SelectionChoice=" || Char( CNT ) || ";" ) ) );
Insert Into( handleList, lb );
Insert Into( CNTList, CNT );
HLB << append( lb );
);
),
HLB = H List Box()
)
);Re: Création de variables à l'exécutionMerci Jim.
Je voudrais développer ma propre interface graphique avec Listboxes et Radioboxes - sans utiliser l’option de filtrage des données.
L'utilisateur pourra contrôler les colonnes à utiliser pour le filtrage - je le laisserai gérer les noms de colonnes dans "User Properties" jsl.
Par exemple désiréColumnsList = {"ColumnA", "ColumnD"} - sera modifié par l'utilisateur.
Ensuite, pour chaque colonne choisie, je créerai une zone de liste pour le filtrage.
Quelques suggestions pour ça?
Merci encore.
À M.
Re: Création de variables à l'exécutionVous pouvez utiliser le "filtre de données" intégré pour faire ce que vous voulez, sans avoir à écrire de code. Ouvrez simplement la table de données souhaitée, puis accédez au menu déroulant.
Lignes ==> Filtre de données
Ensuite, toutes les colonnes peuvent être sélectionnées pour être filtrées.
Enfin, lorsque les filtres ont été sélectionnés et leurs valeurs choisies, le nouveau tableau de données sous-défini peut être créé en accédant au triangle rouge et en sélectionnant "Afficher le sous-ensemble".
Cette action peut également être scriptée avec le code ci-dessous:
Names Default To Here( 1 );
// Open the desired file
path=pick file();
dt=open(path);
// Get all of the columns in the data table
colList = dt << get column names();
// Build the code required to open a Data Filter
// That has all columns available for filtering
TheExpr =
"dt << Data Filter(
Location( {59, 59} ),
Auto clear( 0 ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns(";
TheExpr = TheExpr || ":" || colList[1];
For( i = 2, i <= N Items( colList ), i++,
TheExpr = TheExpr || ", :" || colList[i]
);
TheExpr = TheExpr || ") ) );";
// Execute the code that was built
Eval( Parse( TheExpr ) );