Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"Ho la seguente funzione che viene chiamata da un altro file jsl:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);e anche se l'output del comando show è:
dtImp = DataTable("Details 2");alla riga seguente ottengo il seguente errore:
Send prevede un oggetto scriptabile nell'accesso o nella valutazione di 'Send', dtImp << /*###*/Select Where( !Contains( parametriChoice, :Parameter ) ) /*###*/
Mi sembra strano che anche se riconosce il comando dtImp come DataTable, nella riga successiva lo caratterizza come un oggetto non "scriptable"
Modellazione statistica avanzataAutomazione e scriptingAnalisi e modellazione dei dati di baseAccesso ai datiCombinazione e pulizia dei datiEsplorazione e visualizzazione dei datiRi: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"Potrebbe essere un problema di ambito. Suggerisco di cambiare il riferimento alla colonna :Parameter in
dtImp::Parameter
Qual è il valore della variabile parametriChoice?
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"Il valore del parametroChoice viene scelto dall'utente finale del componente aggiuntivo che sto tentando di creare.
Non risolve il problema e penso che la radice non sia nel comando Seleziona dove. Anche se utilizzo:
dtImp << show window(1);
dà lo stesso errore. Sembra che non consenta di utilizzare l'operatore << per DatatTble.
Ma per essere più analitici. Ho 2 script:
Main.jsl: crea una finestra che offre all'utente finale la possibilità di scegliere il set di dati utilizzando un pulsante
bboxImp = button box( "Select data to import", importData())
where the importData() function reads the data:
importData = Function({},
// Function that is used to select which data to import for the analysis
// Prompt the user to select input file
importFile = Pick File( "Select Excel data to import" );
if(importFile == "",
// No file was selected - we skip the rest
New window("Message", modal,
Text Box("No file has been selected for import")
),
// A file was selected - we continue
// Import data
dtImp = Open( importFile,
Worksheets( "Details" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 31 ),
Data Starts on Row( 32 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// Select rows where "Component" column is empty
dtImp << Select Where( Is Missing( :Name( "Component" ) ) );
// Delete the selected rows
dtImp << Delete Rows;
// Grey out import botton and make Reimport and analysis botton available
wait(1);
dtImp << show window(0);
bboxImp << enable(0);
bboxRe << enable(1);
bboxAn << enable(1);
);
);
ImportRedo = Function({},
// Function that is used to remove imported datasets and allow for another import
// Close imported datafile and ungrey import and analysis botton
Close(dtImp, NoSave);
bboxImp << enable(1);
bboxRe << enable(0);
bboxAn << enable(0);
);end quindi se si preme il pulsante Esegui analisi, viene richiamato lo script Analysis.jsl che crea una finestra in cui l'utente finale effettua alcune scelte per filtrare i dati scegliendo vari valori univoci. In questo script, dopo che l'utente finale ha effettuato le sue scelte, sto cercando di utilizzare:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);per filtrare il DataTable dtImp.
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"parametriChoice è un valore di scala come "xxx" o è un valore di elenco JMP {"xxx"}?
In entrambi i casi, se si tratta di un valore singolo, potresti voler modificare l'ordine di Contiene in
</CODE></PRE>
<PRE><CODE class=" language-jsl">!Contains( :Parameter, parameterChoice )
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"Quale versione di JMP stai utilizzando? Stai utilizzando il generatore di applicazioni? Come gestisci gli ambiti e gli spazi dei nomi (non vediamo gli script completi, quindi siamo lasciati a supposizioni)? Riscontri questi problemi quando lo esegui da file .jsl o dopo averlo integrato in un componente aggiuntivo? Se chiudi la sessione JMP ed esegui lo script, riscontri gli stessi problemi alla prima esecuzione?
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia"È stato difficile fornire il codice completo, quindi ho provato a descriverlo e a fornirne una parte. Tuttavia, capisco che sia difficile per qualcuno fornire aiuto se non è in grado di vedere il codice completo.
Ho trovato la soluzione. Il problema era nello script Main.jsl che ho fornito sopra. In questo script avevo la seguente funzione che veniva chiamata una volta che l'utente finale faceva clic sul pulsante "Esegui analisi":
compatStudyEval = Function({},
// Function that is used to run the analysis script and handle landing page window
// Run the analysis script related to this add-in
Include( pathAddin || "\Analysis.jsl");
// Close landing page
win << close window;
);The problem is generated by the win << close window; command which I included to close the main window.
Ho trovato la soluzione ispirandomi al seguente post:
Risolto: Nome Non risolto: Pulsante di accesso o valutazione Messaggio di avviso JMP - Comunità utenti JMP