/* Procedure stockée pour la gestion des tournées de graissages */ SET TERM ^ ; Create procedure PROC_VUE_TOURNEE (V_E_DATE Date , V_E_IDENTIFIANT VarChar (10) , V_JOUR Integer ) AS Declare Variable V_RANG Numeric(6,2) ; Declare Variable V_DATE Date ; Declare Variable V_ID_MACHINE Integer ; Declare Variable V_BATIMENT VarChar(10) ; Declare Variable V_SECTEUR VarChar(30) ; Declare Variable V_NOM_MACHINE VarChar(50) ; Declare Variable V_NUMERO_RESSOURCE VarChar(10) ; Declare Variable V_CAPACITE Integer ; Declare Variable V_DESIGNATION_PRODUIT VarChar(30) ; Declare Variable V_C_MINI Numeric(4,2); Declare Variable V_C_MAXI Numeric(4,2); Declare Variable V_PH_MINI Numeric(4,2); Declare Variable V_PH_MAXI Numeric(4,2); Declare Variable V_QTE_EAU_INDUS Integer ; Declare Variable V_QTE_EAU_RECYCLE Integer ; Declare Variable V_QTE_PRODUIT_DE_COUPE Integer ; Declare Variable V_VALEUR_C Numeric(4,2) ; Declare Variable V_VALEUR_PH Numeric(4,2) ; Declare Variable V_MELANGE Numeric(6,2) ; Declare Variable V_C_APPOINT Numeric(3,1) ; Declare Variable V_ID_OPERATEUR Integer ; Declare Variable V_POTEAU VarChar(5); Declare Variable V_LUNDI Boolean ; Declare Variable V_MARDI Boolean ; Declare Variable V_MERCREDI Boolean ; Declare Variable V_JEUDI Boolean ; Declare Variable V_VENDREDI Boolean ; Declare Variable V_SAMEDI Boolean ; Declare Variable V_DIMANCHE Boolean ; Declare Variable V_FLAG Boolean ; Declare Variable V_OBSERVATION VarChar(255); Begin /* Efface la table des tournée */ Delete From "$_GESTION_TOURNEE"; Select ID_OPERATEUR From "_OPERATEURS" Where IDENTIFIANT = :V_E_IDENTIFIANT Into :V_ID_OPERATEUR ; /*Determination du nom de la machine */ For Select ID_MACHINE ,LUNDI ,MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE From "_ATTRIBUTION_MACHINES" Where ID_OPERATEUR = :V_ID_OPERATEUR Into :V_ID_MACHINE , :V_LUNDI ,:V_MARDI, :V_MERCREDI, :V_JEUDI, :V_VENDREDI, :V_SAMEDI, :V_DIMANCHE Do Begin V_RANG = Null ; V_BATIMENT = Null ; V_SECTEUR = Null ; V_NOM_MACHINE = Null ; V_NUMERO_RESSOURCE = Null ; V_CAPACITE = Null ; V_DESIGNATION_PRODUIT = Null ; V_C_MINI = Null ; V_C_MAXI = Null ; V_PH_MINI = Null ; V_PH_MAXI = Null ; V_QTE_EAU_INDUS = Null ; V_QTE_EAU_RECYCLE = Null ; V_QTE_PRODUIT_DE_COUPE = Null ; V_VALEUR_C = Null ; V_VALEUR_PH = Null ; V_MELANGE = Null ; V_POTEAU = Null ; V_C_APPOINT = Null ; Select NOM_MACHINE , NUMERO_RESSOURCE , CAPACITE_BAC , BATIMENT , SECTEUR , RANG , POTEAU From MACHINES Where ID_MACHINE = :V_ID_MACHINE Into :V_NOM_MACHINE , :V_NUMERO_RESSOURCE , :V_CAPACITE ,V_BATIMENT , V_SECTEUR , V_RANG , V_POTEAU ; /* Determine les bornes de mesure */ Select "BORNES_C_SMIN", "BORNES_C_SMAX" , "BORNES_PH_SMIN" , "BORNES_PH_SMAX" From "BORNES_MESURES_MACHINE" Where ID_MACHINE = :V_ID_MACHINE Into :V_C_MINI , :V_C_MAXI , :V_PH_MINI, :V_PH_MAXI ; /* Determine le produit en cours */ Select DESIGNATION_PRODUIT , C_APPOINT From PRODUIT_DE_COUPE Where ID_MACHINE = :V_ID_MACHINE And ( "DATE_MISE_EN_SERVICE" <= :V_E_DATE And ("DATE_MISE_HORS_SERVICE" > :V_E_DATE or "DATE_MISE_HORS_SERVICE" is null) ) Into :V_DESIGNATION_PRODUIT , :V_C_APPOINT ; /* Determine les mesures faites */ Select CONCENTRATION_REFRACT , PH From "_MESURES" Where ID_MACHINE = :V_ID_MACHINE And "DATE" = :V_E_DATE Into V_VALEUR_C , V_VALEUR_PH ; /* Determine si il y a eu un appoint fait en eau industriel */ Select QTE From "_APPOINT_EAU_INDUS" Where ID_MACHINE = :V_ID_MACHINE And "DATE" = :V_E_DATE And "TYPE" = 1 Into V_QTE_EAU_INDUS ; /* Determine si il y a eu un appoint fait en eau recyclé */ Select QTE From "_APPOINT_EAU_RECYCLEE" Where ID_MACHINE = :V_ID_MACHINE And "DATE" = :V_E_DATE And "TYPE" = 1 Into V_QTE_EAU_RECYCLE ; /* Determine si il y a eu un appoint fait en produit de coupe */ Select QTE From "_APPOINT_PRODUIT_DE_COUPE" Where ID_MACHINE = :V_ID_MACHINE And "DATE" = :V_E_DATE And "TYPE" = 1 Into V_QTE_PRODUIT_DE_COUPE ; /* Determine si il y a eu une servation faite */ Select OBSERVATION From "_INCIDENT" Where ID_MACHINE = :V_ID_MACHINE And "DATE" = :V_E_DATE Into V_OBSERVATION ; If ((V_LUNDI= 'T') And (V_JOUR = 2)) Then V_FLAG = 'T' ; Else If ((V_MARDI= 'T') And (V_JOUR = 3)) Then V_FLAG = 'T' ; Else If ((V_MERCREDI= 'T') And (V_JOUR = 4)) Then V_FLAG = 'T' ; Else If ((V_JEUDI= 'T') And (V_JOUR = 5)) Then V_FLAG = 'T' ; Else If ((V_VENDREDI= 'T') And (V_JOUR = 6)) Then V_FLAG = 'T' ; Else If ((V_SAMEDI= 'T') And (V_JOUR = 7)) Then V_FLAG = 'T' ; Else If ((V_DIMANCHE= 'T') And (V_JOUR = 1)) Then V_FLAG = 'T' ; Else V_FLAG = 'F' ; If (V_FLAG = 'T') Then Begin Insert Into "$_GESTION_TOURNEE" ("DATE" , IDENTIFIANT ,ID_MACHINE, NOM_MACHINE ,NUMERO_RESSOURCE , BATIMENT , SECTEUR , RANG , DESIGNATION_PRODUIT , CAPACITE , QTE_EAU_INDUS , QTE_EAU_RECYCLE , QTE_PRODUIT_DE_COUPE , "C_MINI", "C_MAXI","PH_MINI", "PH_MAXI" , C_APPOINT , VALEUR_C , VALEUR_PH , POTEAU , OBSERVATION ) VALUES (:V_E_DATE , :V_E_IDENTIFIANT, :V_ID_MACHINE , :V_NOM_MACHINE ,:V_NUMERO_RESSOURCE , :V_BATIMENT , :V_SECTEUR , :V_RANG , :V_DESIGNATION_PRODUIT , :V_CAPACITE ,:V_QTE_EAU_INDUS , :V_QTE_EAU_RECYCLE , :V_QTE_PRODUIT_DE_COUPE ,:V_C_MINI , :V_C_MAXI , :V_PH_MINI, :V_PH_MAXI , :V_C_APPOINT , :V_VALEUR_C , :V_VALEUR_PH , :V_POTEAU , :V_OBSERVATION) ; end end end ^ COMMIT WORK ^