¿Cómo mostrar la ventana modal qué script en ejecución después de abrirlo?Dediqué algún tiempo a crear un script jsl, que proporciona una interfaz de usuario para especificar algunos criterios y extraer datos de Amazon Redshift en función de la entrada del usuario. El guión funciona bien pero tiene un pequeño problema.
Una vez que el usuario hace clic en el botón de consulta en una ventana modal, establece una variable isValid = 1, se cierra para ejecutar el script posterior, que luego creará una ventana de progreso que mostrará un mensaje como "extrayendo datos, espere..." e iniciando el proceso. consulta en abierto. Debería cerrarse solo una vez finalizada la consulta.
El problema es que esta ventana de progreso no se puede ver (no aparece) en mi pantalla. Parece que JMP ejecuta el script de consulta inmediatamente después de crear la ventana antes de mostrarla, aunque la consulta se realiza correctamente.
Intento insertar esperar (0) o poner la ventana al frente antes del script de consulta, pero todavía no tengo suerte. Solo puedo ver la ventana de progreso si comento la parte de la consulta.
¿Qué puedo hacer para que aparezca la ventana y ejecute el script de consulta al mismo tiempo?
/*scripts before this line are not related to the issue, hence not included*/<BR /><BR /><BR />If(isValid == 1,
nwQuery = New Window( "Query", <<SHOW menu=""></SHOW> window show up if remark below lines */
mySQL = Eval Insert(tpSQL);
dbc = Create Database Connection("DSN=Amazon Redshift; UID=***; PSW=***");
dt = Execute SQL (dbc, mySQL, "Query");
close database connection(dbc);<BR /> // add wait(2); if remark above lines
bbOk << Close Window;
))),
bbOk << Click;
);
);Automatización y secuencias de comandosRe: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?La razón para usar la ventana modal es que se mostrará en el centro de la pantalla y se supone que se mostrará en la parte superior de forma predeterminada. Probé la ventana normal antes y tampoco aparece.
De todos modos, reuniré más información y exploraré el nuevo método de consulta SQL. Te responderé nuevamente después de eso.
Muy apreciado por su valiosa opinión y sugerencia, ¡gracias!Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?No es necesario utilizar la ventana modal para mostrar que la consulta se está ejecutando. Utilice la ventana normal, ábrala antes de que comience la consulta y ciérrela cuando finalice la consulta.
Names Default To Here(1);
isValid = 1;
If(isValid == 1,
nw = New Window("Query",
<<SHOW menu=""></SHOW>
<P>También le sugiero que pase de Crear conexión de base de datos, Ejecutar SQL, Cerrar conexión de base de datos a Nueva consulta SQL, ya que es el método preferido para consultas (es más molesto de usar, le falta documentación, pero aún así... es el camino a seguir). adelante).</P>
<P> </P>
<P>Editar:</P>
<P>Si decide pasar a Nueva consulta SQL(), recuerde usar << Ejecutar primer plano con ella SI desea que el script espere a que finalice la consulta.</P>Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?Después de algunas pruebas y errores, descubrí un código para que el script se comporte de la manera que quiero.
Como sugerencia, uso la ventana normal para mostrar que la consulta se está ejecutando + Nueva función de consulta SQL. Dado que la ventana normal no aparecerá en el centro de la pantalla, creo una función para capturar el tamaño de la pantalla del monitor (no quiero llamar a un script externo de Power Shell para eso) y luego calculo dónde debería aparecer.
Sin embargo, hay un pequeño inconveniente: la caja de luz de ocupado no gira cuando se ejecuta la consulta. No podemos hacer nada al respecto, ¿verdad?
Names Default To Here(1);
GetWinConsoleSize = Function({},
nW = New Window("Get Win Console Size", << Window View("Invisible"), << Maximize Window(1));
theSize = nW << Get Window Size();
nW << Close Window();
Return(theSize);
);
drawWinProgress = Function({scrSize},
xSize = 250;
ySize = 50;
cpX = (scrSize[1]/2)-(xSize/2);
cpY = (scrSize[2]/2)-(ySize/2);
nW = New Window("Query Data", << Show Menu(0), << Show Toolbars(0), << Size(xSize,ySize), << Show Window (0),
Lineup Box(N Col(2), Busy Light(<< Automatic, size(40,40)), Text Box(" Pulling data, please wait ...")),
);
nW << Move Window(cpX, cpY);
nW << Show Window (1);
Return(nW);
);
nwMain = New Window("UI for user to input query criteria", << Modal, << Return Result,
// All display box goes here
H List Box(
Spacer Box(),
bbQuery = Button Box("Query",
isValid = 1;
bbQuery << Close Window;
,
isValid = 0;
bbCancel = Button Box("Cancel", Stop()),
),
);
If(isValid == 1,
wcSize = GetWinConsoleSize();
wProg = drawWinProgress(wcSize);
Wait(0);<BR /> // Generating SQL based on user criteria
dt = New SQL Query(Connection(strOdbcConnection), CustomSQL(mySQL)) << Run Foreground;
wProg << Close Window;
);
Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?Podrías usar << Ejecutar en segundo plano pero vendría con muchos problemas diferentes que tendrías que resolver.
Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?También le sugiero que pase de Crear conexión de base de datos, Ejecutar SQL, Cerrar conexión de base de datos a Nueva consulta SQL, ya que es el método preferido para consultas (es más molesto de usar, le falta documentación, pero aún así... es el camino a seguir). adelante).
Utilizo crear conexión de base de datos/ejecutar sql/cerrar conexión de base de datos porque a menudo tengo numerosas consultas SQL para ejecutar. Hay una sobrecarga involucrada para crear la conexión a la base de datos. Llamar a Nueva consulta SQL varias veces podría ser más lento.
Tengo curiosidad por saber por qué cree que la nueva consulta SQL es el camino a seguir.
Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?Mi sugerencia se basa en esta publicación ¿Qué camino tomar para consultar la base de datos? y el comentario de Brian. Realmente no me gusta usar New SQL Query() debido a muchos problemas que tiene, pero aún así, estoy moviendo más y más scripts para usarlo y, con suerte, preparar mis scripts para el futuro.
Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?Utilizo new sql query() todo el tiempo, porque la funcionalidad es la mejor para la mayoría de mis scripts y JMP la recomienda como "la forma correcta". Quizás valga la pena escribir una lista de pros y contras y utilizarla como pista para desarrollos futuros, por ejemplo, ponerla en la lista de deseos. ¿Por qué no mejorar la nueva consulta SQL () para más de una declaración?
Quizás podamos hablar de ello en Scripters Club.
Atentamente,
Re: ¿Cómo mostrar la ventana modal qué script se ejecuta después de abrirlo?Tenemos al menos un elemento de la lista de deseos para mejorar la documentación sobre "nueva consulta SQL()", pero definitivamente hay algunos más que serían necesarios. Recopilar las frustraciones y los problemas es una buena idea (creo que ya hice algunas publicaciones al respecto antes).