oggetto programmabile del report correnteCIAO,
Qual è il modo migliore per ottenere l'oggetto scriptabile del report corrente?
Se si tratta di un oggetto Graph Builder, posso usare
gb = Current Report()["Graph Builder"] << get scriptable object
Questo è incredibilmente robusto, ma funziona solo per gli oggetti Graph Builder. Funziona anche quando l'utente ha cambiato il titolo.
Se non è Graph Builder, posso provare
so = Current Report()[Outline Box( 1 )] << get scriptable object
Funzionerà se non c'è alcun filtro dati locale ,
nessun commutatore di colonna [ah, il commutatore di colonna è un ColumnSwitcherContextOutlineBox , nessun OutlineBox ]
e nessun Dashboard definito dall'utente [ah, la Dashboard viene creata tramite TabPageBox es, non OutlineBox es]
Nel caso del filtro dati locale , potrei controllare il titolo:
ob = Current Report()[Outline Box( 1 )];
If( (ob << Get Title) == "Local Data Filter",
ob = Current Report()[Outline Box( 2 )]
);<BR />ob << get scriptable object;
Questo approccio funziona solo con l'impostazione della lingua inglese e solo se l'utente non ha modificato il titolo di OutlineBox .
Quindi, è meglio controllare se l'oggetto scriptabile è un filtro dati:
Try (so = Current Report()[Outline Box( 1 )] << get scriptable object;
if (Char(Head(so)) == "Data Filter[]" ,
so = Current Report()[Outline Box( 2 )] << Get Scriptable Object),
Caption("failed to get a scriptable object") // user defined Dashboard
)
Automazione e scriptingRe: oggetto scriptabile del report correnteUtilizzare l'attributo XML "@helpKey"
Names Default To Here(1);
obs = Current Report() << XPath("//OutlineBox[@helpKey and not(@helpKey = 'Data Filter')]");
If(N Items(obs) > 0,
obj = obs[1] << Get Scriptable Object;
Show(obj);
);
Write();
La query XPath potrebbe richiedere modifiche aggiuntive a seconda di dove deve funzionare. Nota che con XPath potresti riscontrare problemi in cui la query XPath di JMP non è in grado di gestire l'XML ( Come abilitare XML_PARSE_HUGE per << XPath()? ).
Re: oggetto scriptabile del report correnteAh, bello. Grazie.
Re: oggetto scriptabile del report correnteL'intera questione può diventare controversa se invece di usare
Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) ),
Local Data Filter
);
ob = Current Report()[Outline Box( 1 )];
If( (so << Get Title) == "Local Data Filter",
ob = Current Report()[Outline Box( 2 )]
);
ob << get scriptable object;
Se l'oggetto scriptabile viene ottenuto quando la piattaforma viene eseguita
ob = Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) ),
Local Data Filter
);
Anche se vengono eseguite più piattaforme e l'oggetto scriptabile viene referenziato utilizzando la stessa variabile JSL, è possibile utilizzare un semplice elenco JMP per raccogliere l'oggetto scriptabile, evitando tutta la confusione che Current Report() può generare.
Utilizzando la tabella dati di esempio Big Class, lo script seguente illustra come l'ottenimento dell'oggetto scriptabile nel punto di esecuzione aggira il problema Current Report()
names default to here(1);
dt=current data table();
objectList = {};
dis = Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) )
);
insert into(objectList, dis);
show(current report()[outlinebox(1)]<<GET title=""></GET>
<P>Un elemento della Lista dei desideri per una nuova funzione chiamata</P>
<CODE class=" language-jsl"><< Get Current Report Scriptable Object
potrebbe essere giustificato
Re: oggetto scriptabile del report correntela mia applicazione principale:
Un comando per sintonizzare/interagire con qualsiasi report "esistente".
Quindi non c'è alcuna possibilità di riempire una lista.
@txnelson wrote:
Un elemento della Lista dei desideri per una nuova funzione chiamata
<< Get Current Report Scriptable Object
potrebbe essere giustificato
OK:
messaggio: Ottieni l'oggetto scriptabile del report corrente
ob & so -> corretto nel post principale