Colonne di riferimento estratte dall'analisi di Datafilter select whereVoglio utilizzare un'interfaccia di filtro dati per un uso diverso.
Quindi ho bisogno di analizzare la clausola "seleziona dove" e utilizzare le informazioni lì dentro.
Sono in grado di analizzare la clausola Where e identificare la diversa colonna nell'espressione
ma non fare riferimento a loro
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;
);
tuttavia ottengo la colonna come :ColumName
come posso ora ottenere il riferimento alla colonna per poi continuare con lo script?
nomecol= TestCol << Ottieni nome
finestreOggetto: riferimento alle colonne estratte dall'analisi del filtro dati selezionare doveÈ questo quello che stai cercando? Ho modificato il tuo ciclo For () per inserire il primo bit in un carattere, quindi ho estratto e analizzato la prima parola. Sceneggiatura completa allegata. Probabilmente ci sono anche modi più eleganti per farlo che altri potrebbero aggiungere.
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: Riferimento alle colonne estratte dall'analisi Datafilter select doveAnche questo sembra funzionare, ma nel caso non così insolito di avere una parentesi aperta nel nome della colonna, fallirà. Dovresti fare un trap per questo se è un problema.
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] )
);