IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Calcul temps de Marche sur front montant


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Calcul temps de Marche sur front montant
    Bonjour,

    voila mon probleme :

    Ma base de données INSQL contient le retour de marche des pompes :

    --> quand la pome demarre, le bit passe à 1
    --> quand la pompe s'arrette, le bit passe à 0

    Comment puis je recuperer le temps de fonctionnement de cette pompe ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Comment puis je recuperer le temps de fonctionnement de cette pompe ?
    Ton modèle de donnée doit pouvoir répondre à cette problématique ; avec une table qui historise les différents états de marche des pompes avec une date associée par exemple.

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Quelque chose qui ressemblerait à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    CREATE TABLE TbPompe
    (
    	IDPompe INT IDENTITY(1,1) CONSTRAINT PK_TbPompe PRIMARY KEY (IDPompe),
    	NomPompe VARCHAR(64) NOT NULL
    );
     
    INSERT INTO TbPompe VALUES ('Pompe 1');
    INSERT INTO TbPompe VALUES ('Pompe 2');
     
    CREATE TABLE TbPompeLog
    (
    	IDPompe INT NOT NULL CONSTRAINT FK_TbPompeLog_IDPompe REFERENCES TbPompe (IDPompe),
    	DateDemarrage DATETIME,
    	DateArret DATETIME
    );
    ----------------------------------------------------
    CREATE PROCEDURE psTbLogPompe_Ajoute_DateDemarrage
    	@_IDPompe INT
    AS
    BEGIN
    	IF EXISTS
    	(
    		SELECT 1
    		FROM dbo.TbPompeLog
    		WHERE IDPompe = @_IDPompe
    		AND DateDemarrage IS NOT NULL
    	)
    	BEGIN
    		RAISERROR('La pompe %d a déjà démarré', 16, 1, @_IDPompe);
    	END;
    	ELSE
    	BEGIN
    		INSERT INTO dbo.TbPompeLog (IDPompe, DateDemarrage)
    		VALUES (@_IDPompe, GETDATE());
    	END;
    END;
     
    ----------------------------------------------------
    CREATE PROCEDURE psTbLogPompe_Ajoute_DateArret
    	@_IDPompe INT
    AS
    BEGIN
    	UPDATE dbo.TbPompeLog
    	SET DateArret = GETDATE()
    	WHERE IDPompe = @_IDPompe;
     
    	IF @@ROWCOUNT = 0
    	BEGIN
    		RAISERROR('La pompe %d n''est pas démarrée', 16, 1, @_IDPompe);
    	END;
    END;
    ---------------------------------------------------
    EXEC psTbLogPompe_Ajoute_DateDemarrage 1
    EXEC psTbLogPompe_Ajoute_DateDemarrage 2
    EXEC psTbLogPompe_Ajoute_DateArret 1
    EXEC psTbLogPompe_Ajoute_DateArret 2
    ---------------------------------------------------
    SELECT * FROM TbPompeLog
     
    IDPompe     DateDemarrage           DateArret
    ----------- ----------------------- -----------------------
    1           2008-02-12 22:58:07.700 2008-02-12 22:58:09.840
    2           2008-02-12 22:58:08.733 2008-02-12 22:58:10.950
    A chaque fois qu'une pompe démarre, tu le logues dans la table psTbLogPompe_Ajoute_DateDemarrage, et à chaque fois qu'elle s'arrête, tu le logues avec psTbLogPompe_Ajoute_DateArret.

    Ensuite pour sortir le temps de fonctionnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT NomPompe, DateDiff(millisecond, DateDemarrage, DateArret) TempsFonctionnementPompe
    FROM dbo.TbPompe POMPE
    JOIN dbo.TbPompeLog LOGS ON LOGS.IDPompe =  POMPE.IDPompe

Discussions similaires

  1. Action sur front montant
    Par Stooo dans le forum Simulink
    Réponses: 1
    Dernier message: 27/04/2012, 21h52
  2. compteur sur front montant d'un contact sec
    Par boettez dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/08/2009, 13h52
  3. Réponses: 0
    Dernier message: 21/05/2008, 16h59
  4. front montant sur bit dans un mot
    Par Baxter67 dans le forum C++Builder
    Réponses: 0
    Dernier message: 24/01/2008, 00h08
  5. Calcul temps passé sur une page PHP pur
    Par mathieugamin dans le forum Langage
    Réponses: 10
    Dernier message: 29/03/2007, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo