Référencer les colonnes extraites de l'analyse Datafilter sélectionner oùJe souhaite utiliser une interface de filtre de données pour un usage différent.
Ensuite, j'ai besoin d'analyser la clause "sélectionner où" et d'utiliser les informations qu'elle contient.
Je suis capable d'analyser la clause Where et d'identifier les différentes colonnes dans l'expression
mais sans les référencer
DFClause=Currentdatafilter << get where clause();<BR />SelectInnerExpr=Arg(parse(DFClause),1);<BR />// let assume for a second this will always return an expression of this type to simplify the example <BR />SelectInnerExpr= expr(:study_owner == "name" & :Is Electr. == 1);<BR /><BR />//so i can parse it with a simple for loop
for(iA=1,iA<=NArg(SelectInnerExpr),iA++,
TestColExp=Arg(Arg(SelectInnerExpr,iA),1); // here i can get the column as i need but as :ColumName
TestCol=eval(TestColExp); // so this does not really retun the column reference<BR /> colname= TestCol<< Get Name;
);
cependant je reçois la colonne comme :ColumName
comment puis-je maintenant obtenir la référence de colonne pour continuer ensuite avec le script ?
nom_colonne= TestCol << Obtenir le nom
les fenêtresRe : Référencer les colonnes extraites de l'analyse Datafilter sélectionner oùEst-ce ce que vous cherchez ? J'ai modifié votre boucle For() pour mettre le premier bit dans un caractère, puis j'ai extrait et analysé le premier mot. Scénario complet en pièce jointe. Il existe également des moyens plus élégants de le faire que d'autres pourraient ajouter.
For( iA = 1, iA <= N Arg( SelectInnerExpr ), iA++,
TestColExp = Char( Arg( Arg( SelectInnerExpr, iA ), 1 ) ); // put all into a char()
TestCol = Parse( Word( 1, TestColExp ) ); //now returns test col
);
Re: Référencement des colonnes extraites de l'analyse Datafilter select whereCela semble également fonctionner, mais dans le cas peu inhabituel d'avoir une parenthèse ouverte dans le nom de la colonne, cela échouera. Vous devrez piéger cela si cela vous pose problème.
Names Default To Here( 1 );
dt = open("$Sample_Data\Car Physical Data.jmp");
gb = dt << Graph Builder(
Size( 526, 668 ),
Show Control Panel( 0 ),
Variables( X( :Turning Circle ), Y( :Horsepower ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter( columns( :Country, :Type ), Display( :Type, N Items( 5 ) ) ),
Add Filter( columns( :Weight ), Display( :Weight, Height( 20 ) ) )
)
);
<BR /><BR /><BR /><BR />//////////// processing here
ob = (report(gb) << parent)[outlinebox(1)];
lis = (ob << xpath( "//TabPageBox" )) << get title;
colnames = Transform Each( {v, i}, lis[2 :: (N Items( lis ) - 1)],
Trim Whitespace( Items( [1 1], v, "(" )[1] )
);