JSL: Inicie el diálogo de la plataforma para la entrada del usuario, luego modifique el informeGolpeando mi cabeza contra la pared, debe haber una manera simple de hacerlo, pero estoy perdido.
Aquí está mi escenario deseado:
1) Ejecutar el script debería abrir el cuadro de diálogo de inicio de la plataforma "Distribución", para que el usuario pueda hacer selecciones
2) Al hacer clic en Aceptar, devuelva un identificador al informe resultante para que se pueda abordar y modificar.
Puedo lograr el mismo resultado, laboriosamente, creando un diálogo modal personalizado, analizando los resultados y pasándolos a la plataforma de Distribución. Pero lo que quiero es permitir que el usuario ejecute el diálogo de inicio de Distribución regular.
¿Algunas ideas?
Re: JSL: Iniciar el diálogo de la plataforma para la entrada del usuario, luego modificar el informeJordán,
Aquí hay un ejemplo de la secuencia de comandos guía usando action ().
O esto Haz lo que quieras ?
Stan
Re: JSL: Iniciar el diálogo de la plataforma para la entrada del usuario, luego modificar el informeHola jordan
Ejecute esto y desplácese hasta la parte inferior del informe para ver si esto hace lo que desea:
Names Default To Here(1);
dt = astable(J(20,1,Random Uniform()));
grabHandle = expr(
distHandle = current report();
doTheRest
);
dt << distribution(action(grabHandle));
doTheRest = expr(
for(i=1, i<=3, i++, distHandle[outlinebox(1)] << append(textbox("Yay!")))
);
Tenga en cuenta que dado que "doTheRest" es una expresión llamada por grabHandle, no se ejecutará hasta que el usuario presione el botón Aceptar. De lo contrario, los 3 anexos intentarán ejecutarse inmediatamente; esto da como resultado un error, porque distHandle no estará definido, ya que el informe de Distribución aún no se habrá creado. Por lo tanto, querrá tener todo lo que dependa de / hacia abajo del informe de Distribución envuelto en una expresión, que se llama dentro de cualquier expresión que sea el argumento de la función Action ().
Gracias @stan_koprowski , por mencionar la función Action () ... No sabía de su existencia.
Salud,
Brady
Re: JSL: Iniciar el diálogo de la plataforma para la entrada del usuario, luego modificar el informeGracias @brady_brady Esto es exactamente lo que necesitaba. No se pudo ejecutar Action () correctamente, la expresión anidada funciona. ¡Dulce!
Cualquier desarrollador que lea este hilo, ¿no debería ser esto un poco más fácil? Sería bueno tener una forma más limpia de codificar esto.
Jordán
Re: JSL: Iniciar el diálogo de la plataforma para la entrada del usuario, luego modificar el informeJugando un poco más con esto, parece que las expresiones anidadas ni siquiera son necesarias. Esto también funciona:
Names Default To Here( 1 );
dt = As Table( J( 20, 1, Random Uniform() ) );
dt << distribution(
action(
distHandle = Current Report();
For( i = 1, i <= 3, i++,
distHandle[Outline Box( 1 )] << append( Text Box( "Yay!" ) )
);
)
);
¡Retiro mi comentario anterior pidiendo una mejor manera de codificar esto!
Lo que me hizo tropezar es que Action () no es como un diálogo modal: no detiene la ejecución del script. Cualquier código que siga a la llamada de Distribución se ejecuta inmediatamente, incluso antes de que el usuario haga clic en "Aceptar". Todo lo que tiene que suceder después de la entrada del usuario tiene que estar envuelto dentro del argumento Action ().
Gracias de nuevo @brady_brady y @stan_koprowski por mostrar el camino.