¿Cómo crear entradas de usuario para SQL donde filtros?Entonces estoy usando un ODBC para conectarme a SNOWFLAKE y ejecutar algunos scripts. Me pregunto cómo puedo configurar una ventana de interfaz de usuario con una lista de filtros DONDE para que sea más fácil de usar para las personas.
Estoy imaginando una lista con ventanas emergentes para luego asignar una variable para alimentar el script SQL. ¿posible?

//**SNOWFLAKE QUERY****************************************************************************************************
uid = Get Environment Variable( "USERNAME" );
sql_state="
/********************************/
SELECT distinct
column1
,column2
,etc
from Database
WHERE 1=1
and filter1 like '%qwerty%'
and filter2 in ('a', 'b', 'c')
--and filter3 = '54168'
--and filter4 <> 'that_thing'
--and filter5 not in ('group1','group2')
and Date >= CURRENT_DATE - 30 /*go back 30 days*/
";
snowflake_spc = Open Database( "DSN=SNOWFLAKE1;UID=account;PWD=password;", sql_state );
/****************************************************************************************************/
OtroScriptingRe: ¿Cómo crear entradas de usuario para SQL donde filtros?Definitivamente esto es posible. Dependiendo mucho de sus habilidades de codificación con jsl y de lo complicado que sea el sistema (si se trata de filtrar solo con cláusulas where simples, podría ser bastante simple de hacer).
Un par de cosas en las que pensar:
- Use la cadena de plantilla y luego Eval Insert para agregar valores allí (o simplemente concatenar cadenas).
- ¿Cómo quieres manejar like / =? Cajas de visualización (casilla de radio, casilla de verificación, casilla combinada) o tal vez algún carácter específico en la casilla de edición de texto que indique cómo analizar el texto.
- ¿Cómo manejar múltiples condiciones similares (filter1 como algo o filter2 como algo)?
- ¿Cómo manejar no?
- La ventana modal le brinda una manera fácil de manejar el flujo de la secuencia de comandos
- Piense en cómo se podría expandir el sistema más adelante
- Scripting Guide y Scripting Index serán de gran ayuda. Además, la ayuda de JMP ayudará con diferentes cuadros de visualización.
A continuación se muestra un ejemplo muy simple sobre cómo usar una cadena de plantilla y luego usar eval insert para construir el SQL final.
Names Default To Here(1);
sqlTemplate = "\[
select *
from *
where 1=1
^filter1Str^
^filter2Str^
]\";
filter1Str = "";
filter2Str = "";
rbSel = {"like", "in", "=", "not in", "not like"};
ex = New Window("Dialog() example",
<<MODAL></MODAL>
He construido un sistema bastante similar, que crea consultas SQL completas dependiendo de las entradas y opciones del usuario en una interfaz de usuario (y actualmente estoy reescribiendo por completo eso cuando tengo tiempo, porque expandirlo se volvió demasiado difícil).
Re: ¿Cómo crear entradas de usuario para SQL donde filtros?Esto se hace fcilmente con el Generador de consultas SQL .
En los filtros hay una opción en los filtros para solicitar al ejecutar y JMP se lo pedirá. No es necesario crear sus propios diálogos.

Leer más y recorrer un ejemplo en Cree una consulta SQL .