¿Cómo puedo utilizar el texto ingresado en el cuadro de texto como variables en SQL?I'm a beginner with application builders and I want to achieve the following: I'm currently retrieving data from a database using SQL with a specific time period. However, instead of directly modifying the SQL code to change the period, I want to be able to change it via a GUI. I'm currently executing this with JSL, and I want to replace the [HERE] part of the SQL query.
Ejemplo JSL:
// Get a handle to the data table
dt = Current Data Table();
unique = Function({a}, // input: List, output: List
{aa=Associative Array(),nr=NItems(a),i,aKeys,nUnique,aUnique={}},
For( i=1, i<=nr, i++, aa << insert( a[i] ) );
aKeys = aa << GetKeys;
nUnique = NItems( aKeys );
For( i = 1, i <= nUnique, i++, InsertInto(aUnique,aKeys[i]) );
aUnique
);
dofun = Function({},{months,varName,dType},
months = SampleRateInput << Get;
varName = VarList << GetSelected;
dType = Column(dt,varName[1]) << GetDataType( "English");
If(dType!="Character",
Dialog(Title("Alert"),"Data Type of Variable should be Character. ");
Throw()
);
dt << ClearSelect;
dt << SelectRows( selIdx );
);
OKButtonPress=Function({this},
// This function is called when the OK button is pressed
(thisModuleInstance << Get Box) << Close Window;
dofun;
);
CancelButtonPress=Function({this},
// This function is called when the Cancel button is pressed
(thisModuleInstance << Get Box) << Close Window;
);
New SQL Query(
Version( 130 ),
Connection( ),
QueryName( ),
Select( ),
From(
Table( ),
),
Where(
Custom(
"t1.msr_dt >= DATEADD(month, -[HERE], CURRENT_DATE)",
UI( Custom( Base( "Continuous" ) ) )
)
)
) << Run Foreground( UpdateTable( Current Data Table() ) );
Acceso a datosRe: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?Mi JMP es la versión 19.
Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?¿Tienes tu propia interfaz gráfica de usuario personalizada que deseas usar para cambiar el valor? ¿Puedes extraerlo? Creo que puedes evaluar las variables dentro del bloque Where(Custom()) (al menos con JMP18).
Names Default To Here(1);
myval = 150;
dt = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(["Big Class" => "\C:\Program Files\JMP\JMPPRO\18\Samples\Data\Big Class.jmp"]),
QueryName("SQLQuery2"),
Select(Column("name", "t1")),
From(Table("SQLQuery1", Alias("t1"))),
Where(
Custom(
Eval Insert("t1.weight >= ^myval^"),
UI(Custom(Base("Continuous"))))
)
) << Run Foreground;
Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?jthi-san, Arigatougozaimasu.
La interfaz gráfica descrita anteriormente en el JSL era una versión ligeramente reducida del JSL de la aplicación de ejemplo. La interfaz gráfica que quiero crear es como la de la imagen adjunta.
Entiendo que puedo pasar variables dentro de declaraciones SQL encerrándolas con '^'!
¿Qué código JSL debo escribir para ejecutar una nueva consulta SQL cuando se presiona el botón Aceptar en la GUI? 
Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?Hola @TamedZebra ,
No tiene relación con JSL, pero ¿has probado a usar el Constructor de Consultas de la base de datos? Ofrece una interfaz gráfica de usuario con filtros para cambiar los rangos de fechas.
Gracias,
Ben
Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?@Ben_BarrIngh , Arigatougozaimasu.
Es posible guardar un script en una tabla de datos y, si el script está escrito como 'consulta SQL', podemos actualizar la tabla de datos desde la base de datos con un solo clic.
Pero cambiar el SQL en el script o en el generador de consultas requiere un poco de tiempo y un poco de esfuerzo.
Entonces me gustaría editar SQL mediante la GUI que aparece al presionar un script en la tabla de datos.

Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?No uso un constructor de aplicaciones, sino que escribo todo yo mismo con JSL. Esta aplicación de ejemplo no realiza consultas SQL a la base de datos, sino que utiliza una tabla JMP como "base de datos". Es una versión bastante simplificada, pero puede ofrecer algunas ideas generales.
Names Default To Here(1);
initval = 150;
run_query = Expr(
months_to_query = neb_months << get;
dt = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(["Big Class" => "\C:\Program Files\JMP\JMPPRO\18\Samples\Data\Big Class.jmp"]),
QueryName("QueryMonths"),
Select(Column("name", "t1")),
From(Table("Big Class", Alias("t1"))),
Where(
Custom(
Eval Insert("t1.weight >= ^months_to_query^"),
UI(Custom(Base("Continuous"))))
)
) << Run Foreground;
wait(0);
nw << Close Window;
);
nw = New Window("Query Data",
V List Box(
Panel Box("How Long",
Lineup Box(N Col(2),
Text Box("Months: "),
neb_months = Number Edit Box(initval),
)
),
Lineup Box(N Col(2),
Button Box("OK",
run_query
),
Button box("Cancel",
nw << close window;
)
)
)
);
Write();
Re: ¿Cómo puedo usar el texto ingresado en el cuadro de texto como variables en SQL?obtener --> Obtener texto
Pude implementar los cambios mencionados en JMP 19. Logré lo que quería. ¡Gracias!