Cree un panel de fecha y hora para extraer datos SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Solía usar un script jmp para extraer la tabla de datos SQL. Este día intenté construir un cuadro de panel de ventana para ejecutar la misma función de tabla de datos SQL.
La idea simple es extraer la tabla de datos SQL dentro de un período de tiempo, que serían dos variables de entrada en el cuadro del panel. "End_Time" puede usar fácilmente la sintaxis Today(). Sin embargo, para "Start_Time", intenté escribir un script que permitiera al usuario ingresar una cierta "hora" antes de End_time en la que desea extraer la tabla de datos.
Lamentablemente, este script no funciona como se esperaba.
¿Puede algún gurú del script jmp intentar corregir mi script a continuación? También adjunté el script jmp que escribí para modificarlo.
Muchas gracias,
nw = new window("SQL Data Table Extraction", Vlistbox( tb1=textbox("Start_Time: "), dteb1 = numbereditbox(1), hlistbox( text box("Enter the number of hours: "), hours_teb = text edit box()), tb2=textbox("End_Time: "), dteb2 = numbereditbox(1), ), ok_button = button box("Get Data", << Open Database("DSN=;Description=;UID=;PWD=;APP=;WSID=", sql_statement, Test Data)),dteb1 << set format(format("m/d/y h:m:s", 23, 0)),dteb1 << set width(23),dteb1 << set(today()-EvalExpr((hours_tab)*60*60)),dteb2 << set format(format("m/d/y h:m:s", 23, 0)),dteb2 << set(Today())); sql_statement="SELECT * FROM dbo.TESTCOMPLETE WHERE (dCreated >= '"||Start Date/Time||"') AND (dCreated <='"||End_Date/Time||"')");
Re: Crear un panel de fecha y hora para extraer datos SQLHola Vince,
Gracias por la orientación y la paciencia.Finalmente lo logré.
Debajo se encuentra la versión correcta y funcional.
- NombresDefaultToHere(1);
-
- // Escrito por Vince Faller
- // Hace que aparezca un calendario en un cuadro de edición numérico (predeterminado a ahora)
- // Nota, esto solo obras en JMP 11 o arriba
- cuadro de fecha = Función (
- {tiempo = Hoy()},
- {nueva caja},
- nueva caja = Evaluación(
- Sustituto(
- Nombre Expr(
- Cuadro de edición de número(
- tiempo, // Eval(Sub()) porque de peculiaridad de JMP
- 10, // Solo necesito esto porque JMP no por defecto un ancho
- << Colocar función (
- Función ( {ser},
- {},
- Si( Es Desaparecido (yo << obtener),
- yo << Colocar (Eval(DUMMY)) // Establece el fecha a el argumento del tiempo
- )
- )
- ),
- << Colocar Formato( Formato( "m/d/yh:m:s" , 23, 0 ) ); // Crea formato de fecha y hora para la caja (da calendario)
- )
- ),
- Expr( DUMMY ), tiempo
- )
- );
- nueva caja;
- );
-
- nw =
- Nueva ventana( "Extracción de tablas de datos SQL" ,
- Cuadro de alineación(NCol(2),
- Caja de texto( "Fecha y hora de inicio" ), inicio = dateBox(Hoy() - InDays(12)),
- Caja de texto( "Fecha y hora de finalización" ), fin = cuadro de fecha(),
- Caja de botones( "Cancelar" , nw << cerca ventana), ButtonBox( "Obtener datos" , Ejecutar guión)
- ));
-
- EjecutarScript= Expr(nw<< Cerca Ventana;
- sql_statement=evalinsert( "SELECCIONE * DESDE dbo.TESTCOMPLETE DONDE dCreated >= '^ inicioDT ^' Y dCreado <= '^ finalDT ^' ORDEN POR dCreado" );
- startDT=MDYHMS(inicio << obtener);
- finalDT=MDYHMS( fin <
- Abierto Base de datos (
- "DSN=;Descripción=;UID=;PWD=;APP=;WSID=" ,
- declaración_sql, "Resultado de la prueba" ));
Re: Crear un panel de fecha y hora para extraer datos SQLDos cosas
- sql_statement=evalinsert( "SELECCIONE * DESDE dbo.TESTCOMPLETE DONDE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDEN POR dCreated" );
- Estas no son las mismas variables que startDT y EndDT
- sql_statement debería estar dentro de RunScript
si hago que las últimas dos líneas se vean así, se imprime bien
nw =
Nueva ventana( "Extracción de tabla de datos SQL",
Cuadro de alineación(NCol(2),
TextBox("FechaHora de inicio"), inicio = dateBox(Hoy() - InDays(12)),
TextBox("Fin FechaHora"), fin = dateBox(),
ButtonBox("Cancelar", nw << cerrar ventana), ButtonBox("Obtener datos", RunScript)
));
RunScript= Expr(nw<
startDT=MDYHMS(inicio << obtener);
endDT=MDYHMS(end<
sql_statement="SELECT * FROM dbo.TESTCOMPLETE DONDE dCreated >= '"||startDT||"' AND dCreated <= '"||endDT||"' ORDEN POR dCreated";
imprimir(sql_statement);
);
Re: Crear un panel de fecha y hora para extraer datos SQLGracias por compartir.... chico.yosef
Re: Crear un panel de fecha y hora para extraer datos SQLHola Vince,
Gracias por guiarme a través de mis puntos ciegos y acercarme. Sin embargo, incluso después de cambiar formato startDT = MDYHMS(start<< get) Todavía no puedo hacer que este script SQL funcione. Entonces, sigo recibiendo el mismo mensaje de advertencia de jmp "Nombre sin resolver: Ejecutar en scces o evaluación de 'RunScirpt, RunScript/*###*/". ¿Hay algún problema en mi guión?
También adjunté mi guión para comprobarlo.
¡Gracias por tu ayuda!
NamesDefaultToHere(1);// Written by Vince Faller// Makes a calendar come up on a numeditbox (defaults to now)// Note, this only works on JMP 11 or abovedateBox = Function({timething = Today()},{newbox},newbox = Eval(Substitute(Name Expr(Number Edit Box(timething, // Eval(Sub()) because of JMP quirk10, // Just need this because JMP doesn't default a width<Function( {self},{},If( Is Missing( self << get ),self << Set( Eval( DUMMY ) ) // Sets the date to the timething argument))),<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) ); // Makes datetime format for the box (gives calendar))),Expr( DUMMY ), timething));newbox;);nw =New Window( "SQL Data Table Extraction",LineUpBox(NCol(2),TextBox("Start DateTime"), start = dateBox(Today() - InDays(12)),TextBox("End DateTime"), end = dateBox(),ButtonBox("Cancel", nw << close window), ButtonBox("Get Data", RunScript)));sql_statement=evalinsert("SELECT * FROM dbo.TESTCOMPLETE WHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated");RunScript= Expr(nw< startDT=MDYHMS(start << get); endDT=MDYHMS(end< Open Database( "DSN=;Description=;UID=;PWD=;APP=;WSID=", sql_statement,"Test Result"));Re: Crear un panel de fecha y hora para extraer datos SQLSi ejecuta start << Get (o simplemente pase el mouse sobre startDT).Verá que el valor es en realidad solo un número, 3543202800 para "11/04/2016 7:00:00 a.m.".Entonces, cuando intentas ponerlo en SQL, en realidad solo le estás dando ese número (que no es un carácter, por lo que no puedes concatenarlo).Necesitas cambiar
startDT = iniciar << obtener;
endDT = fin << obtener;
a
inicioDT = MDYHMS(inicio << obtener);
endDT = MDYHMS(fin << obtener);
Creo que esto debería permitirte correr.
En cuanto a su error, parece que no hay ; después de tu línea 43
Re: Crear un panel de fecha y hora para extraer datos SQLEstoy usando el siguiente script para extraer la tabla de datos SQL y limitar el tiempo en modal.
::dbc = mi nombre y nombre de usuario que inserto en un complemento diferente, puedes usar una base de datos abierta en su lugar
Agregué un botón para 2 tablas diferentes (defecto y rendimiento)
otro filtro para parámetro (tipo de defecto, parámetro de rendimiento, etc.)
mi columna de hora SQL es 'dayxxx'
ganar = Nueva ventana ( "seleccionar datos"
<< Modal,
Caja de paneles ( "Seleccionar" ,
cajar = Caja de radio ( { "DEFECTO" , "PRODUCIR" }
)
, Caja de texto ( "PARÁMETRO" ) , cajavariable1 = Cuadro de edición de texto ()
, Caja de texto ( "Insertar días" ) , cajavariable2 = Cuadro de edición de texto ()
) ;
área1 = cajar << conseguir ;
PARAM = cajavariable1 << recibir texto ;
Días = cajavariable2 << recibir texto ;
tabla 1 = si (
área1 == 1 , "tabla de defectosxxx" ,
área1 == 2 , "tabla de rendimientoxxx"
)
;
/// Selección de datos SQL ///
dt = Ejecutar SQL ( :: dbc ,
"SELECCIONAR * DESDE \!"rutaxxx\!".\!"" || tabla 1 || "\!"
DONDE \!"díaxxx\!" > (FECHA_CURRENT - " || Días || " DÍAS)
Y \!"parámetroxxx\!" = '" || PARAM || "'
"
) ;
dt << Escoger un nombre ( "" || PARAM || " " || días || "" ) ;
*Hice muchas modificaciones para ocultar el nombre de la base de datos de mi empresa, por lo que podría cometer algunos errores en el script.
Re: Crear un panel de fecha y hora para extraer datos SQLHola Vince,
Gracias por la respuesta. Reconocí el error ortográfico días antes, pero todavía no puedo hacer que mi script funcione como se esperaba.
En su respuesta, ¿quiere decir que no puedo usar el ¿Función de script Number Edit Box() que solías escribir para el cuadro de fecha()?
¿Es este el problema por el que recibo el siguiente mensaje de advertencia (consulte la imagen a continuación) cuando hago clic en el botón "Obtener datos"?
Sin embargo, ¿cómo es que si ejecuto directamente el siguiente script, jmp puede extraer la tabla de datos de solicitud del servidor SQL?
//This script is wrote to pull data within a certain time framestart_time="04/11/2016 7:00:00 AM";end_time="04/12/2016 7:00:00 PM";sql_statement=evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^start_time^' AND dCreated <= '^end_time^' ORDER BY dCreated");Open Database( "DSN=;Description=;UID=;PWD=;APP=;WSID=",sql_statement, "Test Data");

Re: Crear un panel de fecha y hora para extraer datos SQLnw << Ventana cerrada
bloqueará el script.
necesitas
nw<
También tienes otro error ortográfico en el botón cancelar.
también debe usar MDYHMS(startDT) y endDT, o alguna otra conversión a SQL DateTime porque JMP solo informará un número y SQL no lo tomará como una fecha y hora.
Re: Crear un panel de fecha y hora para extraer datos SQLEstoy usando JMP 11, que no tiene la funcionalidad Query Builder. Espero obtener uno más tarde si nuestro departamento acepta una actualización. De todos modos, gracias por la orientación.Probé el script que publicó Ian de Vince y la función de ventana de fecha y hora funciona.Sin embargo, cuando intenté pegar con el cuadro de botón que diseñé para extraer la tabla de datos del servidor SQL, no obtuve ninguna respuesta. Revisé la declaración SQL con el script jsl original que usé para extraer la tabla de datos SQL y funciona bien. Supongo que hay algún problema con el script diseñado para que el cuadro de botones extraiga la tabla de datos SQL. ¿Alguien puede encontrar una solución rápida?
Muchas gracias,
NombresDefaultToHere(1);
// Escrito por Vince Faller
// Hace que aparezca un calendario en un cuadro de edición numérica (el valor predeterminado es ahora)
// Nota, esto sólo funciona en JMP 11 o superior
cuadro de fecha = Función (
{tiempo = Hoy()},
{nueva caja},
nueva caja = Evaluación(
Sustituto(
Nombre Expr(
Cuadro de edición de número(
timething, // Eval(Sub()) debido a la peculiaridad de JMP
10, // Solo necesito esto porque JMP no tiene un ancho predeterminado
<
Función ({yo},
{},
Si (Falta (yo << obtener),
self << Set( Eval( DUMMY ) ) // Establece la fecha para el argumento del tiempo
)
)
),
<< Establecer formato( Formato( "m/d/yh:m:s", 23, 0 ) ); // Crea formato de fecha y hora para el cuadro (da calendario)
)
),
Expr( DUMMY ), tiempo
)
);
nueva caja;
);
nw =
Nueva ventana( "Extracción de tabla de datos SQL",<
Cuadro de alineación(NCol(2),
TextBox("FechaHora de inicio"), inicio = dateBox(Hoy() - InHours(12)),
TextBox("Fin FechaHora"), fin = dateBox(),
ButtonBox("Cancelar", nw << closeEindow), ButtonBox("Obtener datos", RunScript)
));
sql_statement = evalinsert("SELECT * FROM dbo.TESTCOMPLETEWHERE dCreated >= '^startDT^' AND dCreated <= '^endDT^'ORDER BY dCreated");
RunScript= Expr(nw<
startDT = iniciar << obtener;
endDT = fin << obtener;
Abrir base de datos (
"DSN=;Descripción=;UID=;PWD=;APP=;WSID=1",
declaración_sql,
"Resultado de la prueba"));
Re: Crear un panel de fecha y hora para extraer datos SQL¡Mucho mejor, Erick! Evitar JSL nunca es una mala estrategia . Lamento pasar por alto esta opción.
Re: Crear un panel de fecha y hora para extraer datos SQLHola, bernie426,
Si está en JMP 12, considere usar Query Builder para este tipo de cosas (y si aún no está en JMP 12, intente llegar allí ;-).Query Builder le permite crear consultas SQL filtradas de forma interactiva y puede convertir esos filtros en mensajes.Una de las razones principales por las que se creó Query Builder fue para situaciones como la suya.Así es como se ve la consulta mientras se crea:

Si miras de cerca puedes ver (Inmediato) al lado del filtro.Luego, cuando se ejecuta la consulta, aparece un mensaje que presentará automáticamente un selector de fecha o un selector de fecha y hora, según el formato de la variable:

Algo en lo que pensar, para el futuro, si no de inmediato.
HTH,
eric
Re: Crear un panel de fecha y hora para extraer datos SQLEn términos de selección de fechas y horas, es posible que desee consultar este hilo también. Entonces usando el código amable escrito por Vince Feller Quizás quieras probar este tipo de enfoque ya que ofrece mucha más funcionalidad:
NombresDefaultToHere ( 1 ) ;
// Escrito por Vince Faller
// Hace que aparezca un calendario en un cuadro de edición numérica (el valor predeterminado es ahora)
// Nota, esto sólo funciona en JMP 11 o superior
cuadro de fecha = Función (
{ tiempo = Hoy ()} ,
{ nueva caja } ,
nueva caja = evaluar (
Sustituto (
Nombre Expr (
Cuadro de edición de números (
tiempo , // Eval(Sub()) debido a la peculiaridad de JMP
10 , // Solo necesito esto porque JMP no tiene un ancho predeterminado
<< Establecer función (
Función ( { ser } ,
{} ,
Si ( Está perdido ( ser << conseguir ) ,
ser << Colocar ( evaluar ( FICTICIO ) ) // Establece la fecha para el argumento timething
)
)
) ,
<< Establecer formato ( Formato ( "m/d/yh:m:s" , 23 , 0 ) ) ; // Crea formato de fecha y hora para el cuadro (da calendario)
)
) ,
Expr. ( FICTICIO ) , tiempo
)
) ;
nueva caja ;
) ;
noroeste =
Nueva ventana ( "Intervalo de fecha y hora" ,
AlineaciónBox ( NCol ( 2 ) ,
Caja de texto ( "Fecha y hora de inicio" ) , comenzar = cuadro de fecha ( Hoy () - En horas ( 12 )) ,
Caja de texto ( "Fecha y hora de finalización" ) , fin = cuadro de fecha () ,
Caja de botones ( "Cancelar" , noroeste << cerrarEindow ) , Caja de botones ( "DE ACUERDO" , ejecutar guión )
)
) ;
ejecutar guión =
Expr. (
noroeste << Cerrar ventana ;
inicioDT = comenzar << conseguir ;
finalDT = fin << conseguir ;
Imprimir ( inicioDT , finalDT ) ;
) ;
yo no lo hice Consulte su código original en detalle, pero vi que estaba intentando tener un nombre de variable que contenga '/', lo cual no está permitido a menos que también use 'Nombre()'. Consulte 'Ayuda > Libros > Guía de secuencias de comandos' para obtener más detalles sobre lo que puede y no puede hacer.