Hola,
Gracias por acercarse a esto, a continuación se encuentra el script y también adjunto el archivo.
Borrar registro();
DefaultStartTime = (hoy()-12*3600);
DefaultEndTime = Hoy();
Usuario = Obtener variable de entorno("Nombre de usuario");
HourAlertRateDefault = 5;
SixHourAlertRateDefault = 5;
start_week = Semana del año( Hoy() );
lista_semanas = {};
Para (i = 1, /*i<=10 &*/ i <= start_week, i++, //i<=10 limita el cuadro combinado a las últimas 10 semanas
//iwwtodate(semana_de_inicio - (i - 1), año(hoy()), 2 /*lunes*/ )
Insertar en( lista_semanas, Eval( "WW" || Char( semana_inicio - (i - 1) ) ) )
);
Usuario = Obtener variable de entorno("Nombre de usuario");
//Define la función de tiempo.
iwwtodate = Función( {_ww_, _año_, _díadelasemana_},
//Variables locales
{_ww01esteaño_ = 0, _domingoww01_ = 0},
_ww01thisyear_ = Informat( "01Jan" || Char( _year_ ) );
_domingo01_ = _ww01esteaño_ - (Día de la semana( _ww01esteaño_ ) - 1) * 24 * 3600;
(_ww_ - 1) * 7 * 24 * 3600 + _domingoww01_ + (_díadelasemana_ - 1) * 24 * 3600
;
);
date_box = Function( //crea el datebox de Graham que es difícil de arruinar
{tiempo = Hoy()},
{nueva caja},
current_ver = Izquierda( JMP Versión(), 2 );
Si( Num( current_ver ) >= 11,
nueva caja = Eval(
Sustituto(
Nombre Expr(
Cuadro de edición de números(
timething, //Eval(Sub()) debido a la peculiaridad de JMP
10, //solo necesito esto porque JMP no tiene un ancho predeterminado
<
Función( {self},
{},
Si (Falta (self << get),
self << Set( Eval( DUMMY ) )//establece la fecha en el argumento timething
)
)
),
<
)
),
Expr( DUMMY ), cosa de tiempo
)
)
,
newbox = Cuadro de edición de texto( Char( Formato( Hora, "m/d/aa:m:s" ) ) )
);
//nueva caja;
);
// Fin de la definición de la función de tiempo.
// Crear ventana emergente de expresión + Comprobación de tiempo
ventana_expr = Expr(
QueryOptionsChooser = Nueva ventana( "CHT PWL SPL CV Monitoreo rápido " || Usuario || "",
<
<
V Cuadro de lista(
Cuadro de texto( " " ),
Cuadro de panel ("¿Desea que el informe se actualice automáticamente?",
Cuadro de lista H(
V Cuadro de lista(Cuadro de texto("Método"), tautorefresh = Cuadro combinado({"Ejecutar una vez", "Actualización automática"}, Mostrar(tautorefresh << Obtener()))),
Cuadro de texto( " " ),
V Cuadro de lista(
Cuadro de texto ("Opción"),
Opción_seleccionar = Radio Box( {"Ambos", "Solo SPEC-PL últimos 30 minutos","Solo PWL, SPL, CV " }, mostrar( Opción_seleccionar << obtener() ) )
),
V Cuadro de lista(
Cuadro de texto ("Actualizar cada")
trefresh = Radio Box( {"5 minutos", "20 minutos", "60 minutos", "2 horas"}, Show( trefresh << Get() ) )
),
/*
Cuadro de texto( " " ),
V Cuadro de lista(Cuadro de texto("Velocidad de actualización "), rspeed_cb = Casilla de verificación({"Rápido"}), rspeed_cb << Establecer(1, 1)),
*/
Cuadro de texto( " " ),
V Cuadro de lista (Cuadro de texto ("Datos de rango de tiempo para actualización automática"), días = Cuadro de opción ({"1 día", "0,5 días", "6 horas", "2 horas"})),
Cuadro de texto( " " ),
),
),
/*
Cuadro de panel ( "Seleccione el período de tiempo",
Cuadro de lista H(
V Cuadro de lista(
//Cuadro de texto ("Método de tiempo"),
//método=Radio Box( {"Hace días", "Rango de fechas"}),
Cuadro de texto ("Método de tiempo"),
método = Cuadro combinado( {"Hace días", "Rango de fechas"} ),
),
Cuadro de texto( " " ),
V Cuadro de lista(Cuadro de texto("Hace días"), días = Cuadro de opción({"1.5", "3.5", "7", "2 horas"})),
Cuadro de texto( " " ),
V Cuadro de lista(
Cuadro de texto ("Rango de fechas"),
V Cuadro de lista(
startdatebox = date_box( Hoy() - 3.5 * 24 * 60 * 60 );
enddatebox = date_box( Hoy() );
fecha de inicio = cuadro de fecha de inicio;,
fecha de finalización = cuadro de fecha de finalización,
),
),
),
),
*/
Caja espaciadora (tamaño (10, 10)),
Cuadro de lista H(
Caja espaciadora (tamaño (10, 10)),
Cuadro de panel("Elegir planta:",
Cuadro de lista H(
Caja espaciadora (tamaño (10, 0)),
V Cuadro de lista( "Planta", SeleccionarPlanta = Cuadro de opción( {"DMT1", "DMT2", "KMT1", "PGT1", "PGT2"} ), SeleccionarPlanta << set( 1 ) ),
Caja espaciadora (tamaño (10, 0)),
)
),
Caja espaciadora (tamaño (20, 10)),
Cuadro de panel ( "Elija la ventana de tiempo de transacción:",
Cuadro de texto( " " ),
Cuadro de lista H(
Cuadro de texto("Hora de inicio: "),
StartTimeBox = H Cuadro de lista(
StartTimePickBox = date_box( HoraDeInicioPredeterminada );
StartTimePick = StartTimePickBox;
//RocoTimeStartPick = date_box( (StartTimePick << Obtener) - 3600 );
),
Cuadro de texto( " " ),
Cuadro de botones("Establecer a las 12:00 a.m.",
LastTime = StartTimePickBox << Obtener;
StartTimePickBox << Eliminar;
StartTimeBox << Anexar(
StartTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
StartTimePick = StartTimePickBox;
//RocoTimeStartPick = date_box( 86400 * Floor( (Última hora - 3600) / 86400 ) );
//RocoTimeStartPick = date_box( (StartTimePick << Obtener) - 3600 );
);
),
),
//RocoTimeStartPick = date_box( (StartTimePickBox << Obtener) - 3600 );
Cuadro de texto( " " ),
Cuadro de lista H(
Cuadro de texto ("Hora de finalización:")
EndTimeBox = H Cuadro de lista(
EndTimePickBox = date_box( HoraFinalPredeterminada );
SelecciónDeHoraEnd = SelecciónDeHoraEndBox;
),
Cuadro de texto( " " ),
Cuadro de botones("Establecer a las 12:00 a.m.",
LastTime = EndTimePickBox << Obtener;
EndTimePickBox << Eliminar;
EndTimeBox << Anexar(
EndTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
SelecciónDeHoraEnd = SelecciónDeHoraEndBox;
);
),
),
),
Caja espaciadora (tamaño (10, 10)),
),
Caja espaciadora (tamaño (20, 20)),
//RocoTimeEndPick = date_box( (EndTimePick << Obtener) + 3600 );
Cuadro de lista H (Alinear (Derecha), Cuadro espaciador(), Cuadro de botón ("Aceptar"), Cuadro de botón ("Cancelar")
) //Fin general de VListBox()
);
Si(QueryOptionsChooser["Botón"] == -1,
Deja de ejecutar la cosa
);
// Declaración Hora de refrescar.
días = días << Obtener;
dateoffset = Match( días, 1, "24", 2, "12", 3, "6", 4, "2" );
ar = tautorefresh << obtener;
ref = trefresh << obtener;
actualizar = Coincidir(ref, 1, "5", 2, "20", 3, "60", 4, "120" );
//rspeed = rspeed_cb << obtener;
//Evento de proceso Actualizar marcado
Si( ar == 2,
StartTimePick = date_box( Hoy() - Num( dateoffset ) * 3600 );
EndTimePick = date_box( HoraFinalPredeterminada );
);
RocoTimeStartPick = date_box( (StartTimePick << Get) - 3600 ); // Obtener la hora de Roco 1 hora antes de la hora CHT
RocoTimeEndPick = date_box( (EndTimePick << Get) + 3600 );// Obtener la hora de roco 1 hora después de la hora CHT
CHTTimeStartPick = date_box( (StartTimePick << Obtener) - 1800 );
CHTTimeEndPick = date_box( (EndTimePick << Obtener) + 1800 );
SPL_PL_start = date_box( (EndTimePick << Obtener) - 1800 );
SPL_PL_end = date_box( EndTimePick << Obtener );
//Recopilar selecciones de usuario
SelecciónDePlanta = QueryOptionsChooser["SelecciónDePlanta"];
NombrePlanta = Match(SelecciónPlanta, 1, "DMT1", 2, "DMT2", 3, "KMT1", 4, "PGT1", 5, "PGT2" );
//mostrar(NombreDeLaPlanta);
StartTimeSelection = Format( StartTimePick << Get, "m/d/aa:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "m/d/aa:m:s" );
RocoTimeStart = Format( RocoTimeStartPick << Get, "m/d/aa:m:s" );
RocoTimeEnd = Format( RocoTimeEndPick << Get, "m/d/aa:m:s" );
CHTTimeStart = Format( CHTTimeStartPick << Obtener, "m/d/aa:m:s" );
CHTTimeEnd = Format( CHTTimeEndPick << Obtener, "m/d/aa:m:s" );
SPLPL_timestart = Format( SPL_PL_start << Obtener, "m/d/aa:m:s" );
SPLPL_timeend = Format( SPL_PL_end << Obtener, "m/d/aa:m:s" );
opción_selección = QueryOptionsChooser["Opción_selección"];
Imprimir(opcion_seleccion);
Imprimir(nombreDeLaPlanta);
Imprimir(SelecciónHoraInicio);
Imprimir(FinHoraSelección);
Imprimir( RocoTimeStart );
Imprimir( RocoTimeEnd );
Imprimir( CHTTimeStart );
Imprimir( CHTTimeEnd );
Imprimir(actualizar || "Tiempo de actualización" );
expr_TimeCheck = Expr(
TimeFixWindow = New Window( "¡Error de selección de hora!",
<
<
Cuadro de lista H(
V Cuadro de lista(
Cuadro de texto( " " ),
Cuadro de texto ("¡Su hora de inicio fue posterior a su hora de finalización! ¿Quiere intentarlo de nuevo?"),
Cuadro de texto( " " ),
Cuadro de texto ("Usted eligió:")
Cuadro de lista H(
Cuadro de texto( " " ),
V Cuadro de lista(
Cuadro de lista H(Cuadro de texto("Hora de inicio: " || StartTimeSelection ), ),
Cuadro de lista H (Cuadro de texto ("Hora de finalización: " || EndTimeSelection ) )
)
),
Cuadro de texto( " " ),
Cuadro de lista H(
Cuadro de texto("Hora de inicio: "),
StartTimePickBox = date_box( HoraDeInicioPredeterminada );
StartTimePick = StartTimePickBox;
),
Cuadro de texto( " " ),
Cuadro de lista H(
Cuadro de texto ("Hora de finalización:")
EndTimePickBox = date_box( HoraFinalPredeterminada );
SelecciónDeHoraEnd = SelecciónDeHoraEndBox;
),
Cuadro de texto( " " ),
)
),
H Cuadro de lista (Alinear (Derecha), Cuadro espaciador (), BotónAceptar = Cuadro de botón ("Aceptar"), Cuadro de botón ("Cancelar")
);
StartTimeSelection = Format( StartTimePick << Get, "m/d/aa:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "m/d/aa:m:s" );
Si(TimeFixWindow["Botón"] == -1,
Deja de ejecutar la cosa
);
//Recurra según sea necesario
Si( Informat(SelecciónHoraInicio, "m/d/aa:m:s") > Informat(SelecciónHoraFin, "m/d/aa:m:s"),
Eval(expr_TimeCheck),
Eval(expr_Scrap_SQL)
);
); //fin de expr_TimeCheck
Si( Informat(SelecciónHoraInicio, "m/d/aa:m:s") > Informat(SelecciónHoraFin, "m/d/aa:m:s"),
Eval(expr_TimeCheck),
VisionStartTime = Formato(
Máx(Informat(SelecciónHoraInicio, "m/d/aa:m:s"), 86400 * Piso((Informat(SelecciónHoraFin, "m/d/aa:m:s") - 86400) / 86400)),
"m/d/yh:m:s"
);
Si (Hoy() - Informat(FinHoraSelec., "m/d/aa:m:s") > 86400,
TiempoFinVisión = Formato(
Min(Informat(SelecciónHoraDeFin, "m/d/aa:m:s") ), 86400 * Ceiling((Informat(SelecciónHoraDeFin, "m/d/aa:m:s") - 86400) / 86400 ) ),
"m/d/yh:m:s"
),
TiempoFinVisión = Formato(
Min( Informat( VisionStartTime, "m/d/aa:m:s" ) + 86400, Informat( EndTimeSelection, "m/d/aa:m:s" ) ),
"m/d/yh:m:s"
)
);
);
);
SPL_expr = Expr(
QueryInfo = "CONTROLADOR=SQL Server;SERVIDOR=" || NombreDePlanta || "MESSQLODS;APP=Microsoft Office XP;WSID=FS-1261;BASEDEDATOS=ODS;Conexión_de_Confianza=Sí";
//QueryInfo = "CONTROLADOR=SQL Server;SERVIDOR=" || NombreDePlanta ||
//"messqlods.fs.local;APP=Microsoft Office XP;WSID=FS-10967;BASE DE DATOS=ODS;Conexión de confianza=Sí";