Salut jthi,
Merci d'avoir abordé ce sujet, ci-dessous se trouve le script et j'ai également joint le fichier.
Effacer le journal();
DefaultStartTime = (aujourd'hui()-12*3600);
DefaultEndTime = Aujourd'hui();
Utilisateur = Obtenir la variable d'environnement ("Nom d'utilisateur" );
HourAlertRateDefault = 5;
SixHourAlertRateDefault = 5;
start_week = Semaine de l'année( Aujourd'hui() );
liste_semaines = {};
Pour( i = 1, /*i<=10 &*/ i <= start_week, i++, //le i<=10 limite la liste déroulante aux 10 dernières semaines
//iwwtodate(start_week - (i - 1), year(today()), 2 /*Lundi*/ )
Insérer dans( liste_semaines, Eval( "WW" || Char( début_semaine - (i - 1) ) ) )
);
Utilisateur = Obtenir la variable d'environnement ("Nom d'utilisateur" );
// Définir la fonction temporelle.
iwwtodate = Fonction( {_ww_, _année_, _jourdelasemaine_},
//Variables locales
{_ww01thisyear_ = 0, _sundayww01_ = 0},
_ww01thisyear_ = Informat( "01Jan" || Char( _year_ ) );
_sundayww01_ = _ww01thisyear_ - (Jour de la semaine( _ww01thisyear_ ) - 1) * 24 * 3600;
(_ww_ - 1) * 7 * 24 * 3600 + _dimancheww01_ + (_jourdelasemaine_ - 1) * 24 * 3600
;
);
date_box = Function( // crée la boîte de date de Graham qui est difficile à gâcher
{timething = Aujourd'hui()},
{nouvelle boîte},
current_ver = Gauche( Version JMP(), 2 );
Si( Num( current_ver ) >= 11,
nouvelle boîte = Eval(
Remplaçant(
Nom Expr(
Zone d'édition de numéro(
timething, //Eval(Sub()) à cause d'une bizarrerie JMP
10, //j'en ai juste besoin car JMP ne définit pas de largeur par défaut
<
Fonction( {self},
{},
Si( est manquant( self << get ),
self << Set( Eval( DUMMY ) )//définit la date sur l'argument timething
)
)
),
<
)
),
Expr( DUMMY ), chose temporelle
)
)
,
newbox = Zone d'édition de texte( Char( Format( Timething, "m/d/yh:m:s" ) ) )
);
//nouvelleboîte;
);
// Fin de la définition de la fonction de temps.
// Créer une fenêtre contextuelle expr + Vérification du temps
expr_window = Expr(
QueryOptionsChooser = Nouvelle fenêtre( "CHT PWL SPL CV Surveillance rapide " || Utilisateur || "",
<
<
Zone de liste V(
Zone de texte( " " ),
Panneau de configuration (« Voulez-vous que le rapport s'actualise automatiquement ? »,
Zone de liste H(
V Liste déroulante( Zone de texte( "Méthode" ), tautorefresh = Combo Box( {"Exécuter une fois", "Actualisation automatique"}, Afficher( tautorefresh << Obtenir() ) ) ),
Zone de texte( " " ),
Zone de liste V(
Zone de texte (« Option »),
Option_select = Radio Box( {"Les deux", "Uniquement SPEC-PL 30 dernières minutes", "Uniquement PWL, SPL, CV" }, show( Option_select << get() ) )
),
Zone de liste V(
Zone de texte (« Actualiser toutes les »),
trefresh = Radio Box( {"5 minutes", "20 minutes", "60 minutes", "2 heures"}, Show( trefresh << Get() ) )
),
/*
Zone de texte( " " ),
V Liste déroulante( Zone de texte( "Vitesse de rafraîchissement " ), rspeed_cb = Case à cocher( {"Rapide"} ), rspeed_cb << Set( 1, 1 ) ),
*/
Zone de texte( " " ),
V Liste déroulante( Zone de texte( "Plage de données pour l'actualisation automatique" ), jours = Boîte radio( {"1 jour", "0,5 jour", "6 heures", "2 heures"} ) ),
Zone de texte( " " ),
),
),
/*
Case à cocher (« Veuillez sélectionner la période »,
Zone de liste H(
Zone de liste V(
//Zone de texte ("Méthode temporelle"),
//méthode=Radio Box( {"Il y a quelques jours", "Plage de dates"}),
Zone de texte (« Méthode temporelle »),
méthode = Combo Box( {"Il y a quelques jours", "Plage de dates"} ),
),
Zone de texte( " " ),
V Liste déroulante( Zone de texte( "Il y a quelques jours" ), jours = Boîte radio( {"1,5", "3,5", "7", "2 heures"} ) ),
Zone de texte( " " ),
Zone de liste V(
Zone de texte (« Plage de dates »),
Zone de liste V(
startdatebox = date_box( Aujourd'hui() - 3,5 * 24 * 60 * 60 );
enddatebox = date_box( Aujourd'hui() );
date de début = boîte de date de début;,
date de fin = boîte de date de fin,
),
),
),
),
*/
Boîte d'espacement (taille (10, 10)),
Zone de liste H(
Boîte d'espacement (taille (10, 10)),
Boîte de panneau (« Choisir une plante : »,
Zone de liste H(
Boîte d'espacement (taille (10, 0)),
V Liste déroulante( "Plant", PlantSelect = Radio Box( {"DMT1", "DMT2", "KMT1", "PGT1", "PGT2"} ), PlantSelect << set( 1 ) ),
Boîte d'espacement (taille (10, 0)),
)
),
Boîte d'espacement (taille (20, 10)),
Panneau de configuration (« Choisir la fenêtre de temps de transaction : »,
Zone de texte( " " ),
Zone de liste H(
Zone de texte (« Heure de début : »)
StartTimeBox = H Liste déroulante(
StartTimePickBox = date_box( DefaultStartTime );
StartTimePick = StartTimePickBox;
//RocoTimeStartPick = date_box( (StartTimePick << Obtenir) - 3600 );
),
Zone de texte( " " ),
Boîte à boutons (« Régler sur 00h00 »,
LastTime = StartTimePickBox << Obtenir ;
StartTimePickBox << Supprimer ;
StartTimeBox << Ajouter(
StartTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
StartTimePick = StartTimePickBox;
//RocoTimeStartPick = date_box( 86400 * Floor( (LastTime - 3600) / 86400 ) );
//RocoTimeStartPick = date_box( (StartTimePick << Obtenir) - 3600 );
);
),
),
//RocoTimeStartPick = date_box( (StartTimePickBox << Obtenir) - 3600 );
Zone de texte( " " ),
Zone de liste H(
Zone de texte (« Heure de fin : »)
EndTimeBox = H Liste déroulante(
EndTimePickBox = date_box( DefaultEndTime );
EndTimePick = EndTimePickBox;
),
Zone de texte( " " ),
Boîte à boutons (« Régler sur 00h00 »,
LastTime = EndTimePickBox << Obtenir ;
EndTimePickBox << Supprimer ;
EndTimeBox << Append(
EndTimePickBox = date_box( 86400 * Floor( LastTime / 86400 ) );
EndTimePick = EndTimePickBox;
);
),
),
),
Boîte d'espacement (taille (10, 10)),
),
Boîte d'espacement (taille (20, 20)),
//RocoTimeEndPick = date_box( (EndTimePick << Get) + 3600 );
Liste déroulante H (Aligner(à droite), Zone d'espacement(), Zone de bouton("OK" ), Zone de bouton("Annuler" ) )
) //fin de la VListBox globale()
);
Si( QueryOptionsChooser["Bouton"] == -1,
Arrêtez de courir la chose
);
// Déclaration Il est temps de rafraîchir.
jours = jours << Obtenir;
dateoffset = Match( jours, 1, "24", 2, "12", 3, "6", 4, "2" );
ar = tautorefresh << obtenir;
ref = trefresh << obtenir;
rafraîchir = Match( ref, 1, "5", 2, "20", 3, "60", 4, "120" );
//rspeed = rspeed_cb << obtenir;
//Actualisation de l'événement de processus cochée
Si( ar == 2,
StartTimePick = date_box( Aujourd'hui() - Num( dateoffset ) * 3600 );
EndTimePick = date_box( DefaultEndTime );
);
RocoTimeStartPick = date_box( (StartTimePick << Get) - 3600 ); // Obtenir l'heure Roco 1 heure avant l'heure CHT
RocoTimeEndPick = date_box( (EndTimePick << Get) + 3600 );// Obtenir l'heure Roco 1 heure plus tard que l'heure CHT
CHTTimeStartPick = date_box( (StartTimePick << Obtenir) - 1800 );
CHTTimeEndPick = date_box( (EndTimePick << Obtenir) + 1800 );
SPL_PL_start = date_box( (EndTimePick << Obtenir) - 1800 );
SPL_PL_end = date_box( EndTimePick << Obtenir );
//Collecter les sélections des utilisateurs
PlantSelection = QueryOptionsChooser["PlantSelect"];
PlantName = Match( SélectionPlante, 1, "DMT1", 2, "DMT2", 3, "KMT1", 4, "PGT1", 5, "PGT2" );
//show(PlantName);
StartTimeSelection = Format( StartTimePick << Get, "j/m/aa:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "j/m/aa:m:s" );
RocoTimeStart = Format( RocoTimeStartPick << Get, "j/m/aa:m:s" );
RocoTimeEnd = Format( RocoTimeEndPick << Get, "j/m/aa:m:s" );
CHTTimeStart = Format( CHTTimeStartPick << Get, "j/m/aa:m:s" );
CHTTimeEnd = Format( CHTTimeEndPick << Get, "j/m/aa:m:s" );
SPLPL_timestart = Format( SPL_PL_start << Get, "j/m/aa:m:s" );
SPLPL_timeend = Format( SPL_PL_end << Get, "j/m/aa:m:s" );
option_selection = QueryOptionsChooser["Option_select"];
Imprimer( option_selection );
Imprimer(NomDeLaPlante);
Imprimer(StartTimeSelection);
Imprimer( EndTimeSelection );
Imprimer( RocoTimeStart );
Imprimer( RocoTimeEnd );
Imprimer( CHTTimeStart );
Imprimer( CHTTimeEnd );
Imprimer( rafraîchir || " Heure de rafraîchissement" );
expr_TimeCheck = Expr(
TimeFixWindow = Nouvelle fenêtre( "Erreur de sélection de l'heure !",
<
<
Zone de liste H(
Zone de liste V(
Zone de texte( " " ),
Zone de texte( "Votre heure de début était postérieure à votre heure de fin ! Voulez-vous réessayer ?" ),
Zone de texte( " " ),
Zone de texte (« Vous avez choisi : »),
Zone de liste H(
Zone de texte( " " ),
Zone de liste V(
H Liste déroulante( Zone de texte( "Heure de début : " || StartTimeSelection ), ),
H Liste déroulante( Zone de texte( "Heure de fin : " || EndTimeSelection ) )
)
),
Zone de texte( " " ),
Zone de liste H(
Zone de texte (« Heure de début : »)
StartTimePickBox = date_box( DefaultStartTime );
StartTimePick = StartTimePickBox;
),
Zone de texte( " " ),
Zone de liste H(
Zone de texte (« Heure de fin : »)
EndTimePickBox = date_box( DefaultEndTime );
EndTimePick = EndTimePickBox;
),
Zone de texte( " " ),
)
),
Liste déroulante H (Aligner(à droite), Espaceur(), OKButton = Button Box("OK" ), Button Box("Annuler" ) )
);
StartTimeSelection = Format( StartTimePick << Get, "j/m/aa:m:s" );
EndTimeSelection = Format( EndTimePick << Get, "j/m/aa:m:s" );
Si( TimeFixWindow["Bouton"] == -1,
Arrêtez de courir la chose
);
//Récursivité selon les besoins
Si( Informat( StartTimeSelection, "m/d/yh:m:s" ) > Informat( EndTimeSelection, "m/d/yh:m:s" ),
Eval( expr_TimeCheck ),
Évaluer( expr_Scrap_SQL )
);
); //fin de expr_TimeCheck
Si( Informat( StartTimeSelection, "m/d/yh:m:s" ) > Informat( EndTimeSelection, "m/d/yh:m:s" ),
Eval( expr_TimeCheck ),
VisionStartTime = Format(
Max( Informat( StartTimeSelection, "j/m/aa:m:s" ), 86400 * Floor( (Informat( EndTimeSelection, "j/m/aa:m:s" ) - 86400) / 86400 ) ),
"j/m/aa:m:s"
);
Si( Aujourd'hui() - Informat( EndTimeSelection, "m/d/aa:m:s" ) > 86400,
VisionEndTime = Format(
Min( Informat( EndTimeSelection, "j/m/aa:m:s" ), 86400 * Plafond( (Informat( EndTimeSelection, "j/m/aa:m:s" ) - 86400) / 86400 ) ),
"j/m/aa:m:s"
),
VisionEndTime = Format(
Min( Informat( VisionStartTime, "j/m/aa:m:s" ) + 86400, Informat( EndTimeSelection, "j/m/aa:m:s" ) ),
"j/m/aa:m:s"
)
);
);
);
SPL_expr = Expr(
QueryInfo = "DRIVER=SQL Server;SERVER=" || PlantName || "MESSQLODS;APP=Microsoft Office XP;WSID=FS-1261;DATABASE=ODS;Trusted_Connection=Oui";
//QueryInfo = "DRIVER=SQL Server;SERVER=" || PlantName ||
//"messqlods.fs.local;APP=Microsoft Office XP; WSID=FS-10967;DATABASE=ODS;Trusted_Connection=Oui";