Affichage d'une seule catégorie dans une évaluation (Eval Expr (Data Filter BoxBonne année à tous!
Je suis tombé sur un morceau de code astucieux en utilisant Eval (Eval Expr (pour rendre les boîtes de filtre génériques par nature, 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 certaines de mes tables, j'ai jusqu'à 25 combinaisons de filtres différentes et j'aime les utiliser pour l'affichage d'une seule catégorie. Cependant, lorsque j'utilise Eval (Eval Expr (seul le pré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 en une seule catégorie?
J'ai joint un exemple de script à l'aide du tableau de données de capacité des semi-conducteurs. Lorsque vous exécutez le script, vous verrez dans la zone de contexte du filtre de données (filtre de données) que le lot_id est une seule catégorie et non la tranche. Je cherche à avoir les deux (ou toute combinaison) dans une seule catégorie.
Remarque: Le mérite revient à M. txnelson de m'avoir aidé avec l'expression réelle des parcelles de distribution.
Merci d'avance
ScriptingRe: Affichage d'une seule catégorie dans une évaluation (Eval Expr (Data Filter BoxVous pouvez faire une légère modification 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 que Ajouter un filtre pourrait ne pas vous permettre d'ajouter plusieurs écrans en même temps, car cela fonctionnait également:
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" )
)
)
)
)
)
)
)
)
);Re: Affichage d'une seule catégorie dans une évaluation (Eval Expr (Data Filter BoxMerci Jarmo Je vais essayer le premier dans quelques minutes.
Le problème avec le second script est le filterCol [1] est que le nombre peut être 1 - 5 sur une requête SQL donnée. J'ai écrit un script distinct pour chaque produit pour cette boîte de contexte de filtre de données à cause de cela. Pourquoi j'étais excité quand j'ai vu l'Expr (Eval Expr (.
Re: Affichage d'une seule catégorie dans une évaluation (Eval Expr (Data Filter BoxEn fait, il semble que vous puissiez le faire en laissant de côté l'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 évaluation (Eval Expr (Data Filter BoxLe premier script fonctionne parfaitement. Très appréciée.
Re: Affichage d'une seule catégorie dans une évaluation (Eval Expr (Data Filter BoxJ'ai le sentiment que le JSL ci-dessus peut être trop compliqué. Vous pouvez 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" ));