eseguire lo script della tabellaQual è la differenza tra l'esecuzione di uno script di tabella tramite l'icona verde di riproduzione:

...e tramite il pulsante Esegui?

Automazione e scriptingRi: eseguire lo script della tabellaCi sono motivi per sospettare che ci sia una differenza? Dalla "finestra" dello script è possibile ad esempio eseguire parti separate evidenziandole.
Ri: eseguire lo script della tabellaGeneralmente fanno la stessa cosa.
La piccola freccia verde è più veloce, un clic.

Ri: eseguire lo script della tabellaDopo aver inventato la terza "soluzione" a un "problema di tempistica" in uno script di tabella, purtroppo senza reale successo
...ho scoperto che la differenza effettiva era:
- esegui lo script tramite l' icona di riproduzione → problema
- apri la finestra dello script - [prova un nuovo codice... o niente] - e fai clic sul pulsante Esegui → nessun problema.
Ri: eseguire lo script della tabellaEseguendo facendo clic sulla freccia verde Esegui, viene eseguito lo script sulla tabella dati a cui è allegato.
Eseguendo lo script dalla finestra Modifica, viene eseguito lo script sulla tabella dati attualmente attiva, che potrebbe non essere la tabella dati in cui è stato salvato lo script.
Ri: eseguire lo script della tabellalo pensavo anch'io...
Ri: eseguire lo script della tabellaBuona idea,
ma in realtà, per la modalità "Modifica" ho prestato attenzione ad avere "la mia tabella" attiva prima di fare clic su Esegui.
E: è la modalità "Modifica" che funziona 
forse è correlato a una tabella di dati corrente() da qualche parte nel codice, che potrebbe agire in modo diverso se lo script viene avviato tramite l'icona di riproduzione o tramite il pulsante Esegui.
:)semplicemente mettendo a:) current data table() direttamente in uno script di tabella non ha mostrato differenze tra i due approcci.
Ma il mio codice è una lunga catena di JSL, menu principale ("..."), apertura file, unione, concatenazione...
:)Cercherò di ridurre la complessità per mostrare la differenza o di generare un esempio anonimo...
Ri: eseguire lo script della tabellaHo provato ad aggiungere
current data table();
per vedere se avrebbe reindirizzato lo script alla tabella dati su cui era stato salvato lo script, e così non è stato. Lo script veniva eseguito su qualunque tabella dati fosse la tabella dati corrente.
Ri: eseguire lo script della tabellaIn nessuno di questi casi è possibile fare affidamento su Current Data Table(). Se la nuova tabella si apre immediatamente dopo aver premuto il triangolo verde, la tabella corrente può cambiare prima che lo script venga eseguito (molto probabilmente non è così probabile che accada con il pulsante Esegui verde ma potrebbe). Abbastanza facile da testare con script come questo
wait(1);
Caption(Current Data Table() << get name);
Esegui lo script premendo il triangolo verde e premi immediatamente Ctrl+N per creare una nuova tabella.
Sembra però che se lasci Current Data Table() si attiverà sulla tabella da cui è stato eseguito lo script (in entrambi i casi)
wait(1);
Current Data Table() << New Column("A");
contro
wait(1);
New Column("A");
Ri: eseguire lo script della tabellaPer quanto riguarda il mio problema
In realtà, alla fine, è stata una questione di tempismo
...come lo ha descritto Jarmo - ma un po' al contrario:
Utilizzo un componente aggiuntivo personalizzato per caricare un file.
E poiché il menu principale non può restituire un valore di ritorno
,
Ho usato current data table() per ottenere l'accesso alla tabella appena creata
questa era l'idea...
//<FONT face="courier new,courier">Apri("$SAMPLE_DATA/Grande Classe.jmp");</FONT><BR />Main Menu("load_");
// wait(1);
dt= current data table(); // the idea: myDT
caption(dt << get name())
a) Se utilizzo semplicemente Open( "$SAMPLE_DATA/Big Class.jmp" ) , tutto funziona correttamente.
D'altra parte, dopo aver aperto la tabella dati tramite Main Menu("load_") ,
la tabella dei dati corrente si riferiva ancora alla mia tabella principale (!).
L'attivazione dell'attesa(1) ha risolto il problema, con una penalità di 1 secondo.
b) Per renderlo più robusto (e più veloce), ho creato un riferimento alla tabella :::load_:myTable all'interno di FUNC e ho utilizzato dt=:::load_:myTable invece dell'approccio originale tramite current data table() .
Interessante:
L'approccio tramite :::load_:myTable funziona senza l' attesa(1).
Ciò significa che posso già comunicare con la nuova tabella prima che riceva la tabella dati corrente() !
quindi, forse vale la pena indagare sulla velocità con cui le tabelle di dati ottengono la tabella di dati corrente()
...e perché ci sono differenze.
Ri: eseguire lo script della tabellaTornando all'inizio della discussione, la differenza tra l'icona di riproduzione verde e il pulsante "Esegui" della finestra di modifica:
@Byron_JMP ha scritto:
Generalmente fanno la stessa cosa.
La piccola freccia verde è più veloce, un clic.

il problema si riduce alla constatazione che non esiste UNA tabella dati corrente ben definita() !
Utilizzando il pulsante verde di riproduzione e controllando le finestre dei risultati, è possibile vedere la seguente sequenza:
1) il componente aggiuntivo apre test e segnala che la tabella dati corrente è stata modificata in test
2) la tabella principale pensa ancora che check_current_data_table sia la tabella dati corrente (!!!)
3) Dopo l' attesa(0) lo sa meglio e restituisce test .
D'altra parte, se lo script viene avviato tramite il pulsante RUN nella finestra di modifica, tutte e 3 le finestre dei risultati mostrano la stessa tabella dei dati correnti table() .
sceneggiatura principale:
Names Default To Here( 1 );
Main Menu( "load_" );
win = new window("1 ",Text Box ("main table (1):\!n" ||
(current data table() << get name())));
wait(1);
win = new window("2 ",Text Box ("main table (2):\!n" ||
(current data table() << get name())));carico_:
Names Default To Here( 1 );
dt = open("C:\temp\test.csv");
Caption( {100, 200}, "postprocessing ...");
win = new window("addIn", text box("inside the addin:\!n" ||(current data table()<< get name())));
// win << moveWindow( 100, 100 );
Caption( remove );
Scavando più a fondo, si scopre che piccoli dettagli come abilitare << moveWindow all'interno dell'AddIn o disabilitare uno dei comandi di didascalia hanno un effetto sul comportamento.
Ri: eseguire lo script della tabellaA proposito, lo stesso problema:
non esiste UNA tabella dati corrente ben definita() !
è stato anche il problema che ha attivato questo post: ThisDataTable() ?
con lo stesso bugfix:
aggiungi attesa (0)
di fronte a
dt = tabella dati corrente()!