Me encuentro con un problema al obtener la información del usuario y convertirla en una variable. El script que intento utilizar para esto está pegado debajo de este párrafo. He ejecutado el mismo script varias veces y, sin editarlo, obtengo dos resultados diferentes en el registro. Este guión es el siguiente:
names default to here(1);
clear log();
close all(journals, no save);
close all(data tables, no save);
defuplim = format(today(),"ddMonyyyy");
deflowlim = format(today() - in days(730), "ddMonyyyy");
New Window("Pick Your Dates in ddMonyyyy format",
<<Modal,
<<return result,
V List Box(
Text Box("Start Date:"),
str1=Text Edit Box(deflowlim),
text box("End Date:"),
str2=Text Edit Box(defuplim)
),
H List Box (Button Box ("OK"), Button Box ("Cancel"))
);
lowlim = str1 << get text;
uplim = str2 << get text;
lowlim=informat(lowlim);
uplim= informat(uplim);
show (lowlim);
show (uplim);
El primer resultado del registro es lo que espero que produzca el script y se copia y pega entre comillas a continuación:
“
lowlim = 19 de enero de 2015;
uplim = 18 de enero de 2017;
“
La otra respuesta que recibo del registro (nuevamente, sin editar el script en absoluto) es la siguiente:
“
referencia de objeto eliminado: str2 << obtener texto en el acceso o evaluación de 'Glue', nombres predeterminados aquí (1); /*###*/Borrar registro(); /*###*/
Cerrar todo (diarios, no guardar); /*###*/Cerrar todo (tablas de datos, no guardar); /*###*/
defuplim = Formato( Hoy(), "ddMonyyyy" ); /*###*/deflowlim =
Formato (Hoy() - En días (730), "ddMonyyyy"); /*###*/
Nueva ventana ("Elija sus fechas en formato ddMonyyyy",
<
<
V Cuadro de lista(
Cuadro de texto ("Fecha de inicio:"),
str1 = Cuadro de edición de texto (deflowlim),
Cuadro de texto ("Fecha de finalización:"),
str2 = Cuadro de edición de texto (defuplim)
),
H Cuadro de lista( Cuadro de botón( "Aceptar"), Cuadro de botón( "Cancelar") )
); /*###*/lowlim = str1 << obtener texto; /*###*/uplim = str2 << obtener texto; /*###*/lowlim
= Información( lowlim ); /*###*/uplim = Información( uplim ); /*###*/Mostrar( lowlim ); /*###*/
Mostrar( uplim ) /*###*/;
En el siguiente script, error marcado por /*###*/
Nombres predeterminados aquí (1); /*###*/Borrar registro(); /*###*/
Cerrar todo (diarios, no guardar); /*###*/Cerrar todo (tablas de datos, no guardar); /*###*/
defuplim = Formato( Hoy(), "ddMonyyyy" ); /*###*/deflowlim =
Formato (Hoy() - En días (730), "ddMonyyyy"); /*###*/
Nueva ventana ("Elija sus fechas en formato ddMonyyyy",
<
<
V Cuadro de lista(
Cuadro de texto ("Fecha de inicio:"),
str1 = Cuadro de edición de texto (deflowlim),
Cuadro de texto ("Fecha de finalización:"),
str2 = Cuadro de edición de texto (defuplim)
),
H Cuadro de lista( Cuadro de botón( "Aceptar"), Cuadro de botón( "Cancelar") )
); /*###*/lowlim = str1 << obtener texto; /*###*/uplim = str2 << obtener texto; /*###*/lowlim
= Información( lowlim ); /*###*/uplim = Información( uplim ); /*###*/Mostrar( lowlim ); /*###*/
Mostrar( uplim ) /*###*/;
“
He activado y desactivado las primeras cuatro líneas, pero obtengo los mismos resultados (una combinación de respuestas) independientemente de si están activadas o desactivadas.
¿Alguna idea de qué puede estar causando este error?
Es necesario mirar más código del que usted especificó para poder interpretarlo.
deflowlim = Today() - In Days( 730 );
str1 = Number Edit Box(
deflowlim,
10,
<<SETFUNCTION></SETFUNCTION>
Básicamente, lo que está sucediendo aquí es configurar un campo de entrada de datos para permitir al usuario ingresar una fecha.El tipo de campo de entrada de datos es un cuadro de edición de números(). (Consulte la documentación y el ejemplo de Number Edit Box() en el índice de secuencias de comandos en el menú desplegable Ayuda).

La documentación indica que la forma del cuadro de edición de números() es:
y = Number Edit Box( initValue, <width> )
Se asigna una variable llamada "str1" como puntero al cuadro de edición de números(). En la ilustración, esta es la variable "y"
La variable "deflowlim" se utiliza para establecer el valor inicial que se mostrará en el cuadro de edición de números(). En la ilustración, este es el "initValue".
El ancho del cuadro de edición de números() está establecido en 10 caracteres.
Como se puede ver en la lista de documentación anterior, hay una gran cantidad de mensajes de elementos que se pueden pasar al objeto Number Edit Box().El mensaje en cuestión del código sobre el que pregunta es "Establecer función".Aquí está la lista del índice de secuencias de comandos

Lo que hace este mensaje es configurar una parte de JSL que se ejecuta cada vez que se cambia algo en el cuadro de edición de números().
lowlim = str1 << get
Entonces, cada vez que se cambia algo en el cuadro de edición de números(), se pasa un mensaje "obtener" a "str1", que es el cuadro de edición de números()
El mensaje "obtener" es:

Returns the number currently entered in the edit box
y el número devuelto se asigna a la variable "lowlim".
Por lo tanto, "lowlim" es una variable escalar a la que se puede hacer referencia en JSL posteriores.Sólo es necesario asignar una variable escalar, ya que las fechas JMP se almacenan como un valor de datos numérico continuo.
Espero que esto aclare tu(s) pregunta(s).
Nuevo en jmp y tratando de entender cómo funciona esta secuencia. ¿Alguien podría explicar cómo funciona este aspecto del código? Parece que guarda la entrada del cuadro en una variable local sin necesidad de enviar los resultados del cuadro de texto a una matriz, pero no estoy seguro de cómo funciona la función para lograr esto.
<<SETFUNCTION></SETFUNCTION>
El script de txnelson es una mejor manera de manejar fechas, además también resuelve el problema principal que tiene con su script al obtener valores dentro de los cuadros.
En su secuencia de comandos, crea una nueva ventana modal, pero luego intenta obtener información de los cuadros de visualización en la ventana después de cerrarla. Una vez que se cierra una ventana, ya no puedes acceder a lo que contenía: ya no existe. Es por eso que recibe errores de sintaxis para lowlim = str1 << get text;
Sin embargo, ya casi has llegado: especificaste el resultado de retorno para la ventana modal, pero no estás usando lo que obtienes de ella.
Sin realizar ningún otro cambio (aunque el manejo de fechas de txnelson es mejor), puede obtener lo que desea asignando la Nueva ventana a una variable y luego obteniendo esos valores (los cambios se muestran a continuación en rojo):
ww = New Window("Pick Your Dates in ddMonyyyy format",
<ww["str1"];
uplim = ww["str2"];
Pruebe esta versión... mantiene la fecha como numérica, que es la forma en que JMP prefiere manejarlas.
Names Default To Here( 1 );
Clear Log();
Close All( journals, no save );
Close All( data tables, no save );
defuplim = Today();
deflowlim = Today() - In Days( 730 );
New Window( "Pick Your Dates in ddMonyyyy format",
<<MODAL></MODAL>