Enviar espera objeto programable en el acceso o evaluación de 'Enviar'Tengo la siguiente función que es llamada por otro archivo jsl:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);e incluso si la salida del comando show es:
dtImp = DataTable("Details 2");en la siguiente línea me sale el siguiente error:
Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dtImp << /*###*/Select Where( !Contains( parámetroChoice, :Parameter ) ) /*###*/
Me parece extraño que incluso si reconoce el comando dtImp como un DataTable, en la siguiente línea lo caracteriza como un "Objeto no programable".
Modelado estadístico avanzadoAutomatización y secuencias de comandosAnálisis y modelado de datos básicosAcceso a los datosCombinación y limpieza de datosExploración y visualización de datosRe: Enviar espera objeto programable en el acceso o evaluación de 'Enviar'Puede que sea una cuestión de alcance. Sugiero cambiar su referencia a la columna :Parámetro a
dtImp::Parameter
¿Cuál es el valor de la variable parámetroChoice?
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar'El valor del parámetroChoice lo elige el usuario final del complemento que estoy intentando crear.
No resuelve el problema y creo que la raíz no está en el comando Seleccionar dónde. Incluso si uso:
dtImp << show window(1);
da el mismo error. Parece que no permite utilizar el operador << en DatatTble.
Pero para ser más analítico. Tengo 2 guiones:
Main.jsl: crea una ventana que le brinda al usuario final la capacidad de elegir el conjunto de datos usando un botón.
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);
);finalice, si presiona el botón Ejecutar análisis, llama al script Analysis.jsl que crea una ventana donde el usuario final toma algunas decisiones para filtrar los datos eligiendo varios valores únicos. En este script, después de que el usuario final toma sus decisiones, intento utilizar:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);para filtrar el DataTable dtImp.
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar'¿Es parámetroChoice un valor escalador como "xxx" o es un valor de lista JMP {"xxx"}?
En cualquier caso, si se trata de un valor único, es posible que desee cambiar el orden de Contiene a
</CODE></PRE>
<PRE><CODE class=" language-jsl">!Contains( :Parameter, parameterChoice )
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar'¿Qué versión de JMP estás usando? ¿Estás utilizando el creador de aplicaciones? ¿Cómo maneja los ámbitos y los espacios de nombres (no vemos scripts completos, por lo que debemos hacer conjeturas)? ¿Tiene estos problemas cuando lo ejecuta desde archivos .jsl o después de haberlo integrado en un complemento? Si cierra su sesión JMP y ejecuta su script, ¿tiene los mismos problemas en la primera ejecución?
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar'Fue difícil proporcionar el código completo, así que intenté describirlo y dar parte de él. Sin embargo, entiendo que es difícil para alguien brindar ayuda si no puede ver el código completo.
Encontré la solución. El problema estaba en el script Main.jsl que proporcioné anteriormente. En este script tenía la siguiente función que se llamaba una vez que el usuario final hacía clic en el botón "Ejecutar análisis":
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.
Encontré la solución inspirada en la siguiente publicación:
Solucionado: Nombre Sin resolver: Botón en acceso o evaluación Mensaje de Alerta JMP - Comunidad de Usuarios JMP