Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleCiao a tutti,
Sono un po' confuso sul perché lo script della tabella non consideri dinamicamente la variabile impostata nello script principale. Di conseguenza, le cifre ottengono valori standard anziché selezioni dinamiche basate sull'esecuzione del ciclo for. Ogni aiuto sarebbe apprezzato. Di seguito è riportato lo script della tabella a cui mi riferisco nel caso in cui non venga comunemente chiamato script della tabella.

Si prega di dare un'occhiata allo script JSL principale sulla sinistra in cui il codice evidenziato funziona dinamicamente. Quando lo "script vc" viene salvato nella tabella dati, lo script si apre sul lato destro dello screenshot. Sembra che il primo valore che "weights" e "counts" incontrano sia impostato per tutti i cicli del ciclo for in cui è incorporato. C'è un modo per renderlo dinamico? Ho letto solo post su come rendere le colonne stringhe o una formula, ma non credo che si adatti a questo caso.

Ogni aiuto sarebbe gradito per modificare il codice jsl principale in modo che lo script salvato non codifichi questi valori in modo rigido. Grazie in anticipo!
Automazione e scriptingAnalisi e modellazione dei dati di baseEsplorazione e visualizzazione dei datiIngegneria della qualità e dei processiCondivisione e comunicazione dei risultatiFinestreRe: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleCi sono dei valori specifici che desideri valutare ma non tutti sono presenti nel tuo script VC?
Re: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleIn alto a sinistra, creo una tabella dati sottoinsiemi "vc depo summary subset" che per ogni ciclo for sottoinsiemi di una variabile in questo caso depo ma per amore di un esempio: depo = {"A", "B", "C"}. Nello script jsl a sinistra, il sottoinsieme di A fornisce pesi = [50, 50, 50, 50, 50] e conteggi = [16, 20, 19, 20, 20] e il sottoinsieme di B o C fornisce pesi e conteggi diversi. Lo script a sinistra funziona correttamente. Ma quando apro lo stesso script che è salvato nella tabella dati, imposta pesi/conteggi predefiniti sui valori di A invece di lasciare la variabile (come è a sinistra) che trasporta i pesi/conteggi corretti per B e C rispettivamente. Non sono sicuro di come mantenerla come variabile piuttosto che vedere i valori codificati a destra.
Re: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleSe ho capito bene, vuoi impedire la valutazione di alcune variabili. Un'opzione per farlo è usare più Expr().
As you didn't share the script, I will try to use very simple example which hopefully demonstrates what you can do. Compare the script, table script and script which is inside frame box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
script = EvalExpr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(Expr(Expr(vals)))},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(Expr(Expr(vals)))), i++,
H Line(Expr(Expr(Expr(vals))));
);
);
);
))
);
Eval(EvalExpr(
dt << New Script("Test", Expr(Name Expr(script)));
));


Re: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleGrazie Jarmo, ha funzionato!
C'è un motivo per cui dobbiamo racchiudere la variabile tre volte con tre funzioni Expr() invece di una sola?
Re: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principaleSì, perché è proprio così che funziona la valutazione delle espressioni su JMP ( Guida alla scrittura di script > Metodi di programmazione > Espressioni, macro ed elenchi avanzati "Espressioni tra virgolette e senza virgolette").
In questo caso voi due avete EvalExpr quando costruite l'espressione che ne valuterà due E volete lasciarne uno in più per lo script della tabella in modo che venga mantenuto come Expr invece di essere valutato (quindi ne servono tre in totale). Ci sono altri modi per costruire cose come questa, ma è bene imparare come aggiungere più Expr() a volte può essere utile.
Penso che ad esempio questo dovrebbe produrre uno script simile senza bisogno di tripla Expr()
script = Substitute(
Expr(
vals = [55, 60, 70];
Eval(
Eval Expr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = _valsexpr_},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(_valsexpr_), i++,
H Line(_valsexpr_)
);
)
)
)
);
),
Expr(_valsexpr_), Name Expr(Expr(vals))
);
Re: Lo script della tabella dati non si aggiorna dinamicamente per utilizzare il nuovo valore nello script salvato ma funziona dallo script jsl principalePerché non solo
script = Expr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(vals)},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(vals)), i++,
H Line(Expr(vals));
);
);
);
))
);?