comment attribuer une colonne à une liste ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />En JSL, il existe une fonction de diag de colonne dans laquelle une colonne d'un tableau peut être affectée à une liste à l'aide de la fonction ColList. Lorsque le script est exécuté, l'utilisateur doit cliquer sur un bouton pour que l'affectation ait lieu. Cela nécessite une entrée interactive de l’utilisateur.
Col_dlg = ColonneDialog(
Titre("Affectation de variable"),
::x = ColList("ID d'exécution", MinCol(1), MaxCol(1), Colonnes(:LOT)),
.....
);
Existe-t-il un moyen d'écrire un script tel qu'une colonne puisse être attribuée à une liste sans que l'utilisateur clique sur le bouton de la fenêtre de dialogue (aucune fenêtre de dialogue ne s'affichera lors de son exécution) ?
J'ai essayé:
::x = ColList("ID d'exécution (obligatoire)", MinCol(1), MaxCol(1), Columns(:LOT));
::x = :LOT << Obtenir les valeurs ;
::x = Colonne(dt,"LOT");
tout a échoué. Des indices ?
Re : Comment attribuer une colonne à une liste ?Désolé, c'est de ma faute. Mon explication n'était pas claire. Ce que j'aime faire, c'est utiliser des affectations de variables globales robustes sur certaines colonnes pour remplacer la fonction Column Diag afin qu'aucune réponse interactive de l'utilisateur ne soit requise. Voici la situation :
dans ma routine principale, il y a un Column Diag dans lequel certaines colonnes sont affectées à des variables globales, qui seront appelées dans de nombreuses fonctions existantes dans les bibliothèques. Certaines commandes sont utilisées dans ces fonctions de la bibliothèque :
N_x = NArticles(x);
Column(dt, Eval(x2)) << Set Property("Niveaux d'ordre des lignes", (1));
Tableau de variabilité(...)
Bivarié(..)
....
Aucune modification de ces fonctions de bibliothèque n'est autorisée. Actuellement, les variables globales attribuées à l'aide de la fonction Column Diag fonctionnent bien sans aucun problème avec les fonctions de bibliothèque existantes. Mais tous les essais suggérés ci-dessus peuvent fonctionner pour certaines commandes, mais générer des erreurs pour d'autres.
J'espère que mon explication cette fois est claire :-). Ou ajoutez probablement plus de confusion :-(.
John
Re : Comment attribuer une colonne à une liste ?Je ne vois aucune raison spécifique d'imiter la sortie ColList ici, mais vous pouvez créer une liste avec une colonne comme celle-ci :
dt = Ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
col = { colonne ( dt , "Nom" )} ;
colonne ( dt , col ) << Définir la propriété ( "Niveaux d'ordre des lignes" , ( 1 )) ;
Mais pour votre exemple, une variable de colonne normale est plus simple :
dt = Ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
col = colonne ( dt , "Nom" ) ;
col << Définir la propriété ( "Niveaux d'ordre des lignes" , ( 1 )) ;
Encore une autre manière basée sur une liste de colonnes :
dt = Ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
:: X = ( dt << obtenir les noms de colonnes ())( 1 ] ;
:: X << Définir la propriété ( "Niveaux d'ordre des lignes" , ( 1 ) ) ;
Re : Comment attribuer une colonne à une liste ?Oui, en utilisant
::x2 = Column(dt, "LOT") << Obtenir les valeurs ;
me donnera une liste avec toutes les valeurs sous la colonne LOT, mais ce ::x2 n'agira pas exactement comme le ::x attribué en utilisant la fonction ColList de Column Diag. Par exemple, la commande suivante
Column(dt, Eval(x)) << Set Property("Niveaux d'ordre des lignes", (1));
avec le ::x attribué à l'aide de la fonction ColList, mais j'obtiendrai une erreur lorsque j'appellerai
Column(dt, Eval(x2)) << Set Property("Niveaux d'ordre des lignes", (1));
Le message d'erreur est :
"impossible de trouver la colonne lors de l'accès ou de l'évaluation de 'Column', Column( dt, Eval( x ) )"
Pour le ::x attribué par la fonction ColList, Eval(x) me donnera "LOT" ;
Pour le ::x2 attribué de cette manière, Eval(x) me donnera une liste avec toutes les valeurs sous la colonne LOT.
Ce que j'aime faire, c'est : trouver un moyen d'attribuer une colonne à une liste, agir EXACTEMENT comme la fonction ColList, mais sans interface utilisateur avec la fenêtre de dialogue ou réponse interactive de l'utilisateur. Si quelqu'un peut me fournir les codes de la fonction ColList, ce serait génial !
Re : Comment attribuer une colonne à une liste ?Votre avant-dernier essai aurait dû fonctionner, mais peut-être que la table contenant la colonne LOT n'était pas la table actuelle.La syntaxe suivante fonctionne :
dt = Ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
x1 = : nom << obtenir des valeurs ;
x2 = colonne ( dt , "nom" ) << obtenir des valeurs ;
Assurez-vous que la variable pointant vers votre table de données est définie.Par exemple:
dt = tableau de données ( "Mes Lots" ) ; // Table contenant la colonne LOT
:: X = Colonne ( dt , "PARCELLE" ) << Obtenir des valeurs ;