Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniProblema nella mia app che stavo risolvendo il problema per l'intera giornata. L'ho ristretto a questo comportamento molto strano. A meno che mi manchi qualcosa, questo non dovrebbe essere in questo modo.
Ho aperto due tavoli: "Baseball" e "Basket".
Ho questo script:
Clear Log();
//dt_current=Data Table("Basketball");
/*Two tables opened: Baseball and Basketball. The table named "Basketball" is selected as current table*/
dt_working=Data Table("Baseball");
Show("This is the dt_working table:");
Show(dt_working<<GET name=""></GET>Ovviamente, sto cercando di creare una casella di riepilogo Col con colonne di Baseball Table.
Ma questo è ciò che mi mostra il mio log (e il resto dell'app):
"This is the dt_working table:";
dt_working << Get Name() = "Baseball";
"Columns names:";
colNamesList = {Player, Batting};
"This is what dt_working still is:";
dt_working << Get Name() = "Baseball";
"But this is what I got in Col List Box:";
colListX << Get Items = {"School", "CSN", "Durham Sun", "Durham Herald", "Washington Post", "USA Today", "Sports Magazine", "In Sport", "UPI", "AP", "Sports Illustrated"};Per qualche motivo, anche se ho specificato dt_working per essere Baseball e ho detto che Col List Box è stato creato usando la tabella dt_working, popola Col List Box con colonne dalla tabella dati corrente che ho scelto nella barra degli strumenti in cima.
Un'altra app che in genere ha un codice diverso, ma quella parte specifica è esattamente la stessa, funziona in modo diverso e in che modo intendevo farlo funzionare. Qualcuno può aiutarmi a risolverlo ulteriormente? Perché mai dovrebbe compilare la Col List Box non formando la tabella che ho detto di popolare, ma dalla tabella corrente?
A lungo termine sto provando a visualizzare le colonne delle tabelle che seleziono in una diversa casella di riepilogo. Una funzionalità simile in un'altra app funziona perfettamente. Qui non importa quale tabella clicco (ed eseguo un codice simile a quello che ho citato) mostra sempre colonne dalla tabella selezionata in alto.
Grazie,
M.
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti strani @MathStatChem ha scritto:
Inoltre, osservando la sintassi nella guida allo scripting, sembra che la sintassi non consenta l'uso di un riferimento alla tabella di dati, è necessario utilizzare la sintassi:
y = Col List Box (, ...)
La tabella dati () negli argomenti per la casella di riepilogo Col () non è una funzione, è un argomento con nome che consente a Col List Box () di sapere che l'argomento deve essere interpretato come una tabella di dati. Come tale prende un riferimento alla tabella di dati come argomento. Ecco un esempio:
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA\Solubility.jmp" );
New Window("Example", Col List Box( Data Table( dt ), all ) );
Non è necessario il messaggio << Ricevi il nome.
Vedremo come provare a rilevare automaticamente se il primo argomento è un riferimento alla tabella di dati.
Grazie a @Justin_Chilton per la spiegazione
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti strani
@ gzmorgan0 ha scritto:
Sì, questa è stata la mia raccomandazione di utilizzare ColListBox (Tabella dati (dt_ref << getname), ...)
E funziona! Mi hai salvato due volte oggi!
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniOk, forse non è un bug, dovrò cercare vecchie e-mail, ma ho trovato un riferimento con ColListBox (dt, ...) da qualche parte e contrassegnato JMP.
Sì, questa è stata la mia raccomandazione di utilizzare ColListBox (Tabella dati (dt_ref << getname), ...)
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniInoltre, osservando la sintassi nella guida allo scripting, sembra che la sintassi non consenta l'uso di un riferimento alla tabella di dati, è necessario utilizzare la sintassi:
y = Col List Box (, ...)
quindi usando questo codice
y=Col List Box( Data Table(dt_working<<GET name=""></GET>
ti dà il risultato desiderato. Non penso che sia un bug, è solo una sintassi sgraziata.
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniAh, ok, vedo. La casella di riepilogo Col sta utilizzando la tabella di dati corrente, non il riferimento della tabella di dati. Una soluzione rapida, è quella di inserire nello script, appena prima dell'istruzione colList, questa dichiarazione:
Tabella dati corrente (dt_working);
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniSì, ho aperto un altro script, ma lì funzionava come
previsto. Proverò la soluzione alternativa di Georgia e ti faccio sapere se funziona. Ho avuto una
forte sospetto che fosse un grande, non era chiaro per me cosa stava scatenando
da quando esattamente lo stesso codice ha funzionato bene in un'altra app.Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniHo eseguito il tuo codice, utilizzando la tabella Baseball.JMP dai dati di esempio e non ho visto il comportamento che stai vedendo. Ecco la mia uscita di registro.
"This is the dt_working table:";
dt_working << Get Name() = "Baseball";
"Columns names:";
colNamesList = {Player, Batting};
"This is what dt_working still is:";
dt_working << Get Name() = "Baseball";
"But this is what I got in Col List Box:";
colListX << Get Items = {"Player", "Batting"};Hai aperto un altro script in cui hai creato il riferimento a colListX, magari con un'altra tabella?
Potrebbe essere meglio usare il comando Nomi predefinito su Qui (1) all'inizio dello script. Se non lo fai, allora tutte le tue variabili sono globali e due diversi script possono camminare sulle rispettive variabili.
Ri: Sto impazzendo o come è possibile? - Hai bisogno di aiuto per la risoluzione di comportamenti straniLo definirei un bug. Sono stato catturato da questo ultimo anno. Comunque, c'è una soluzione. Il problema è che ColListBox non sta valutando o analizzando il riferimento alla tabella dt_working. La mia raccomandazione è di usare la sintassi ColListBox (tabella dati (dt_working << nome get), .... o per rendere la tabella prevista la tabella di dati corrente, quando viene creato colListX.
hmmm my JSl sta eseguendo il wrapping. Script allegato.
open("$Sample_data/Basketball.jmp");<BR />open("$Sample_data/Baseball.jmp");<BR /><BR />Clear Log();<BR /> //dt_current=Data Table("Basketball");<BR /> /*Two tables opened: Baseball and Basketball. The table named "Basketball" is selected as current table*/<BR /> dt_working=Data Table("Baseball");<BR /> <BR /> Show("This is the dt_working table:");<BR /> Show(dt_working<<GET name=""></GET> colNamesList = dt_working << Get Column Names;<BR /> show("Columns names:");<BR /> show(colNamesList);<BR /> show(current data table()); //Baseball<BR /> <BR /> colListX = Col List Box (all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> //_______________________________________________________<BR /> <BR /> Write("\!N" ||Repeat("_",60)||"\!N");<BR /> <BR /> //make Basektball current <BR /> <BR /> current data table(Data Table("Basketball"));<BR /> <BR /> colListX = Col List Box (dt_working, all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> colListX = Col List Box (NameExpr(dt_working), all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> colListX = Col List Box (Data Table("Baseball"), all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET> <BR /> <BR /> colListX = Col List Box (Data Table(dt_working<<GET name=""></GET> show(colListX<<GET items=""></GET><BR /><BR /> Eval( <BR /> Parse( EvalInsert("colListX = ColListBox( ^dt_working^, all, width(250), maxSelected(1));") )<BR /> );<BR /> wait(0);<BR /> show(colListX<<GET items=""></GET>