Come posso evitare un errore quando seleziono una riga da una casella di tabella filtrata?Utilizzo JMP 17.1 e ho lo script mostrato di seguito che funziona grazie a @jthi aiuto.Quando eseguo lo script, ottengo una tabella di Big Class.jmp in una finestra e posso selezionare una riga e restituisce i valori di Altezza e Peso dalla riga selezionata.Nella mia applicazione nel mondo reale, ho una tabella molto più grande che vorrei filtrare facendo clic con il pulsante destro del mouse nella finestra e scegliendo "Filtra dove...".Quando ottengo la tabella filtrata nella Table Box, a volte la riga selezionata restituisce i dati e altre volte restituisce un errore che dice "Problema di pedice nell'accesso o nella valutazione di 'hvals[/*###*/sel], hvals[ /*###*/sel]".Nel mio esempio qui sotto, faccio clic con il pulsante destro del mouse sulla casella della tabella Big Class e Filtra per sesso == F.
Qualche idea su come posso recuperare i dati per tutte le righe della casella della tabella del sottoinsieme?
names default to here(1);
//run this now
dt = open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(row() <= 10) << get as report;
tb = rpt[Table Box(1)];
tb << Set Selectable Rows();
tb << set row change function( Function( {this}, sel = this << get selected rows ) );
sel = tb << get row change function;
nw = new window("test",
v list box(
outline box("Big Class", rpt),
text box("Click 'OK' to choose height and weight"),
Button box("OK",
hvals = tb[NumberColBox("height")] << get;
wvals = tb[NumberColBox("weight")] << get;
ht = hvals[sel][1];
wt = wvals[sel][1];
print(sel, ht,wt);
)
)
);Di seguito sono riportate le immagini della tabella originale (prime 10 righe della classe Big), la tabella della classe Big dopo aver filtrato per sesso e scelto la riga in cui si verifica per prima l'errore, e il messaggio di errore.Tieni presente che lo script funziona sulla tabella filtrata nelle prime 5 righe ma non nelle righe 6 o 7.
Automazione e scriptingRi: Come posso evitare un errore quando si seleziona una riga da una casella di tabella filtrata?Sembra un bug in cui non è possibile ottenere quelle righe che sono DOPO le righe filtrate
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = tb << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
tb << Set Selected Rows([2]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Set Selected Rows([6]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Reset Filter;
sel = tb << get selected rows;
show(sel);
Ri: Come posso evitare un errore quando si seleziona una riga da una casella di tabella filtrata?Ti suggerisco di contattare il supporto JMP (posso farlo anche io se lo desideri) a riguardo. Molto probabilmente ci sono diverse soluzioni alternative, ma eccone una che sembra funzionare (usando clone box()).
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = (tb << clone box()) << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
Non sono sicuro che la casella clonata venga archiviata da qualche parte, quindi potrebbe essere meglio archiviarla in una variabile, ottenere le righe selezionate e quindi impostare la variabile su mancante.
Ri: Come posso evitare un errore quando si seleziona una riga da una casella di tabella filtrata?Segnalerò l'accaduto al supporto JMP.@jthi , grazie mille per tutto il vostro aiuto.
Ri: Come posso evitare un errore quando si seleziona una riga da una casella di tabella filtrata?Quando ricevi una risposta dal supporto, se hanno soluzioni alternative, aggiungile qui. Inoltre potrebbe essere una buona idea pubblicare anche l'ID del ticket (se qualcuno ha una domanda simile ed è collegato a questo argomento, lo staff di JMP può cercare l'ID del ticket ed eventualmente controllarne lo stato).
Ri: Come posso evitare un errore quando si seleziona una riga da una casella di tabella filtrata?Il ticket di supporto JMP è: TS-00063284