Affichage d'une seule catégorie dans une zone de filtre de données Eval( Eval Expr(Bonne année à tous!
Je suis tombé sur un astucieux morceau de code utilisant Eval( Eval Expr( pour rendre les boîtes de filtre de nature générique, ce qui signifie que je peux simplement remplir une liste et la boîte de filtre représenterait toutes les colonnes d'une table de données donnée. Dans certains de mes tableaux, j'ai jusqu'à 25 combinaisons de filtres différentes et j'aime les utiliser « Affichage de catégorie unique ». Cependant, lorsque j'utilise Eval (Eval Expr (seul le premier nom de la liste obtient la "catégorie unique" et le reste finit par être une liste. Existe-t-il un moyen de les transformer tous en une seule catégorie ?
J'ai joint un exemple de script utilisant le tableau de données sur les capacités des semi-conducteurs. Lorsque vous exécutez le script, vous verrez dans la zone contextuelle du filtre de données (filtre de données) que seul le lot_id est une catégorie unique et non la tranche. Je cherche à avoir les deux (ou toute combinaison) dans une seule catégorie.
Remarque : le mérite revient à M. txnelson pour m'avoir aidé avec l'expression réelle des diagrammes de distribution.
Merci d'avance
Ingénierie Qualité et ProcédésRe : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Merci encore gentil monsieur, ça a marché
Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Dans la boucle for, vous pouvez utiliser quelque chose comme ceci :
for(i = 1, i <= N Items(filterCol), i++,
dtFilter << Display(filterCol[i], Size( 188, 16 ), Height( 16 ), "Single Category Display");
curFilter = dtFilter << Get Filter Column(filterCol[i]);
curFilter << Clear Find;
);
Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Petite question sur la fonctionnalité "Rechercher" dans le filtre de données. Pouvez-vous le désactiver ou est-ce par défaut sur un certain nombre d'éléments dans l'affichage d'une seule catégorie ?Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)J'ai le sentiment que le JSL ci-dessus est peut-être trop compliqué. Vous pourriez faire quelque chose comme ceci :
NamesDefaultToHere(1);
dt = Open( "$sample_data/Semiconductor Capability.jmp" );
// Columns to filter by (in a list)
filterCol = {"lot_id", "wafer"};
// Example report
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :NPN1 ),
Quantiles( 0 ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Process Capability( Use Column Property Specs )
),
Automatic Recalc( 1 )
);
// Add a data filter
df = dist << Local Data Filter(Add Filter(columns( Eval(filterCol) )));
// Change the display format of all the filter variables
for(c=1, c<=NItems(filterCol), c++, df << Display( Eval(filterCol[c]), "Single Category Display" ));
Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Le premier script fonctionne parfaitement. Très appréciée.
Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)En fait, il semble que vous puissiez le faire simplement en laissant de côté le Expr( filterCol ) dans Display() :
Eval(
Eval Expr(
dfcb100_S = Data Filter Context Box(
filter100_S = H List Box(
graph_vlb100_S = V List Box(
Lineup Box( N Col( 1 ),
Border Box( Sides( 15 ),
dt << Data Filter(
Local,
Mode( Show( 0 ) ),
Add Filter(
Columns( Expr( filterCol ) ),
Display(Size( 188, 16 ), Height( 16 ), "Single Category Display")
)
)
)
)
)
)
)
)
);Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Merci Jarmo, je vais essayer le 1er dans quelques minutes.
Le problème avec le deuxième script est que le filterCol[1] est que le nombre peut être compris entre 1 et 5 sur n'importe quelle requête SQL donnée. C'est pour cette raison que j'ai écrit un script distinct pour chaque produit pour cette zone contextuelle de filtre de données. Pourquoi j'étais excité quand j'ai vu le Expr( Eval Expr(.
Re : Affichage d'une seule catégorie dans une Eval (Eval Expr (Data Filter Box)Vous pouvez apporter de légères modifications comme celle-ci (notez la variable dtFilter dans Eval) :
Eval(
Eval Expr(
dfcb100_S = Data Filter Context Box(
filter100_S = H List Box(
graph_vlb100_S = V List Box(
Lineup Box( N Col( 1 ),
Border Box( Sides( 15 ),
dtFilter = dt << Data Filter(
Local,
Mode( Show( 0 ) ),
Add Filter(
Columns( Expr( filterCol ) )
)
)
)
)
)
)
)
)
);
for(i = 1, i <= N Items(filterCol), i++,
dtFilter << Display(filterCol[i], Size( 188, 16 ), Height( 16 ), "Single Category Display" )
);Je pense qu'Ajouter un filtre pourrait ne pas vous permettre d'ajouter plusieurs écrans en même temps, car cela a également fonctionné :
Eval(
Eval Expr(
dfcb100_S = Data Filter Context Box(
filter100_S = H List Box(
graph_vlb100_S = V List Box(
Lineup Box( N Col( 1 ),
Border Box( Sides( 15 ),
dt << Data Filter(
Local,
Mode( Show( 0 ) ),
Add Filter(
Columns( Expr( filterCol ) ),
Display( Expr( filterCol[1] ), Size( 188, 16 ), Height( 16 ), "Single Category Display" ),
Display( Expr( filterCol[2] ), Size( 188, 16 ), Height( 16 ), "Single Category Display" )
)
)
)
)
)
)
)
)
);