Seleziona la tabella, quindi le colonneCiao, sono nuovo nell'uso di JMP e JSL e ho problemi a creare uno script che seleziona una tabella, quindi 2 colonne e poi fa qualcosa con quello.
Ecco un esempio
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>In questo esempio sto provando un semplice script in cui posso selezionare una delle tabelle già aperte, selezionare 2 colonne ed eseguire un semplice grafico. Tuttavia non riesco a fare in modo che il programma riconosca la tabella specifica che seleziono.
In futuro dovrò interagire con poche tabelle contemporaneamente e selezionare colonne diverse da tabelle diverse per ottenere i miei risultati. Ho pensato che questo script sarebbe stato un inizio facile. Sarei molto grato se qualcuno potesse fornirmi anche una breve spiegazione sul motivo per cui non riesco a selezionare la tabella che sto scegliendo nella prima casella o su come migliorarla, insieme alla soluzione del mio script.
Grazie!
Automazione e scriptingCondivisione e comunicazione dei risultatiRi: Seleziona la tabella, quindi le colonneTi suggerisco di leggere le finestre modali nella Guida allo scripting.Onestamente, ti suggerisco di leggere l'intera Guida allo Scripting.
Guida==>Libreria della documentazione JMP
Ri: Seleziona la tabella, quindi le colonneGrazie mille, i tuoi esempi chiariscono la maggior parte delle mie domande. Il mio problema principale era come puntare la tabella per far funzionare il mio codice, ora che vedo tutte queste diverse opzioni è molto chiaro dove fossero i miei errori.
Un'altra cosa, quando dici " Le finestre modali hanno alcune azioni predefinite con i pulsanti OK e Annulla", cosa mi consigli per saperne di più? Ho la guida allo scripting ma non l'ho letta, pensi di poterla trovare lì? Oppure suggerisci qualche altra fonte?
Grazie!
Ri: Seleziona la tabella, quindi le colonneCIAO,
Ho riscontrato ulteriori problemi con il tuo script originale che penso di aver risolto (ad esempio riferimento errato alla tabella dati nella casella di riepilogo Col)
Ecco la mia soluzione che potrebbe essere ancora un po' goffa dal punto di vista della codifica:
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Ri: Seleziona la tabella, quindi le colonneLe finestre modali hanno alcune azioni predefinite con i pulsanti OK e Annulla, che possono confondere il codice che ritieni stia accadendo.Trovo che sia meglio adottare le azioni predefinite e apportare semplici modifiche al mio codice per ottenere ciò che desidero.Ecco la mia modifica alla parte di selezione della tabella del codice per impostare la tabella dati selezionata come tabella dati corrente e anche per avere la variabile "dt" impostata come puntatore alla tabella dati.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@Thierry_S il suggerimento di utilizzare un elenco per risolvere il problema è valido.Tuttavia, lo faccio in modo leggermente diverso.Salvo il riferimento completo alla tabella dati nell'elenco, non solo il nome.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Ri: Seleziona la tabella, quindi le colonneGrazie mille, ma non risolve il mio problema. In realtà avevo già uno script come questo e ho iniziato a complicare le cose perché non riesco a gestire la mia casella di riepilogo Col aggiornare l'elenco delle colonne nella tabella dati selezionata. Forse il mio problema è in quella parte del codice?Ri: Seleziona la tabella, quindi le colonneCIAO,
Sembra che potresti aver complicato le cose creando un pedice per assegnare l'output di dtlb a dt.
Mi chiedo se la seguente variazione funzionerebbe meglio per te (non è più necessario avere "OKScript".
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>