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

Modélisation Discussion :

Historique Collectivité propriétaire Usine [AC-2007]


Sujet :

Modélisation

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut Historique Collectivité propriétaire Usine
    Bonjour,
    Je dois revoir une base access sur les productions d’eau des collectivités :
    USINE(id, lib, Col#…)
    ANNEE(id)
    MOIS(id)
    ASS_PRODUCTION (mois#, annee#, usine#, volume)
    COLLECTIVITE(id, lib…)

    Une requête me permet de connaître le volume produit par collectivité : somme des volumes produits pour l’ensemble des usines dont la collectivité est propriétaire
    Seulement on assiste de plus en plus à des fusions entre collectivités exemple
    Avant 2008 PetiteColl Propriétaire USINE P
    GrandeCOLL Propriétaire USINE Q
    Après 2008 PetiteColl n’existe plus et fusionne avec GrandeColl qui devient propriétaire de USINE P.
    Sans même qu’il y ait fusion entre collectivité, il est aussi possible qu’une collectivité rétrocède ses usines à une autre collectivité.
    Je pense qu’il est nécessaire d’avoir une table de relation entre COLLECTIVITE_USINE_ANNEE. Seulement c’est contraignant, beaucoup d’objets et à compléter tous les ans. Je pensais mettre une date de début et/ou date de fin plutôt. Mais j’ai peur que la requête pour trouver les productions de chaque collectivité se complique.
    Qu’en pensez-vous ?
    Merci

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 306
    Billets dans le blog
    48
    Par défaut
    bonjour,

    Nana35 revient pour de nouvelles aventures...

    Je propose dans un premier temps:

    USINE(idUsine, NomUsine,...., DateDernièreMAJCollectivité, #idCollectivitéActuelle)

    HISTO_USINE(#idUsine, DateDebut, DateFin, #idCollectiviteHisto)

    je mets un lien vers une ancienne discussion sur le même thème (ici il s'agit de produits dont on veut conserver l'historique des "TRT", à adapter à tes usines dont tu veux conserver l'historique des collectivités):
    http://www.developpez.net/forums/d97...n/#post5503843

    à voir si ça convient...

    à +

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Nana35 revient pour de nouvelles aventures...
    C'est vrai que je me lance dans des trucs et dans des explications...

    En tous les cas, ça m'a l'air pas mal. Je teste et je te redis au plus vite.
    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Bonjour,
    J'ai fait ce qu'il fallait.
    Mais il va falloir penser à un second temps! Désolée.

    Je ne vois pas trop à quoi me sert le champ DateDernièreMAJ dans mes requêtes. C'est juste à titre d'info? Là, j'ai affecté la date du 01/01/2011 pour toutes les usines avec la collectivité actuelle.

    Autrement il faut que j'utilise la Table
    ASS_PRODUCTION (mois#, annee#, usine#, volume)
    qui contient les volumes afin d'attribuer les volumes d'eau produit aux collectivités en tenant compte de l'historique. Et là ???
    On doit pouvoir faire correspondre date_début et date_fin avec ASS_PRODUCTION.annee

    Besoin d'un coup de pouce!
    Merci

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 306
    Billets dans le blog
    48
    Par défaut
    bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HISTO_USINE :
    idUsine      	  DateDebut	DateFin	        idCollectivite
    1		01/01/2010	31/06/2010	2
    1		01/07/2010	31/12/2010	3
    …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USINE:
    idUsine	...   DateMAJ	 idCollectiviteEnCours
       1	      01/01/2011         4
    Au 01/01/2011 l'usine n°1 appartient à la collectivité n°4 (après avoir été sous les collectivités n°2 et n°3 en 2010).

    Supposons que l'usine n°1 passe sous la collectivité n°5 au 01/02/2011:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HISTO_USINE :
    idUsine      	  DateDebut	DateFin	        idCollectivite
    1		01/01/2010	31/06/2010	2
    1		01/07/2010	31/12/2010	3
    1		01/01/2011	31/01/2011	4
    …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USINE:
    idUsine	...   DateMAJ	 idCollectiviteEnCours
       1	      01/02/2011         5
    DateMAJ est donc la date depuis le dernier changement de collectivité.

    Dans le lien de mon message précédent, je propose une requête qui devrait permettre de retrouver la collectivité d'une usine à une date précise.
    Tu devrais l'inclure dans une fonction VBA.

    Je pense que tu auras également besoin de la fonction VBA, DateSerial pour reconstituer une date à partir de tes champs [Mois] et [Annee]:

    DateSerial([Annee], [Mois],1)
    retournera la date correspondant au 1er jour du mois et de l'année.

    Note qu'une méthode moins élégante (question de goût) mais beaucoup plus simple pourrait consister à reprendre le champ idCollectivite dans ASS_PRODUCTION:
    ASS_PRODUCTION (mois#, annee#, usine#, idCollectivite#, volume)

    On re-précise chaque mois de chaque année la collectivité de l'usine (même s'il n'y a aucun changement de collectivité).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Merci
    Très bien expliqué.
    La méthode moins élégante, j'y pensais et je voulais l'éviter.
    mais bon du coup ça complque les requêtes. Et les fonctions VBA c'est pas mon truc.
    Pour DateSerial voilà ce que j'ai fait mais ça ne fonctionne pas.
    Syntaxe pas valide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function CreationDate(AnneeChamp As Integer, MoisChamp As Integer) As Date
    CreationDate = DateSerial(AnneeChamp, MoisChamp, 1)
    End Function
    et dans la requête avec la Table ASS_PRODUCTION qui appelle cette fonction j'ai mis:
    DateProduction: CreationDate([ANNEEid],[MOISid])
    Peut être pb déclaration, pb type (mes deux champ sont pourtant numériques)
    A suivre donc...

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 306
    Billets dans le blog
    48
    Par défaut
    Voici ce que j'ai testé...

    - Une requête paramétrée nommée R_Coll:

    R_Coll:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PARAMETERS [LaDate?] DateTime, [Usine?] Long;
    (
      SELECT idCollectiviteEnCours AS idCol FROM USINE
      WHERE idUsine=[Usine?] AND DateMAJCollectivite<=[LaDate?]
    )
    UNION ALL (
      SELECT idCollectiviteHisto as idCol FROM HISTO_USINE
      WHERE idUsine=[Usine?]
           AND DateDebut<=[LaDate?]
           AND DateFin>=[LaDate?]
    );
    qui retourne la collectivité d'une usine donnée à une date donnée.

    - Une fonction VBA GetCollectivite qui exploite la requête précédente:
    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
    Public Function GetCollectivite(LaDate As Date, Usine As Long) As Long
    Dim qdf As DAO.QueryDef
    Dim rcs As DAO.Recordset
     
      Set qdf = CurrentDb.QueryDefs("R_Coll")
          qdf.Parameters("[LaDate?]") = LaDate
          qdf.Parameters("[Usine?]") = Usine
     
      Set rcs = qdf.OpenRecordset
     
      If Not rcs.EOF Then
            GetCollectivite = rcs.Fields(0)
        End If
     
      qdf.Close
      rcs.Close
      Set qdf = Nothing
      Set rcs = Nothing
     
    End Function
    - Une requête de sélection toute simple avec les assistants (à compléter avec les jointures ad hoc avec les autres tables):
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    ASS_PRODUCTION.MOIS, 
    ASS_PRODUCTION.ANNEE, 
    ASS_PRODUCTION.Volume, 
    ASS_PRODUCTION.idUsine, 
    GetCollectivite(DateSerial([ANNEE], [MOIS],1), ASS_PRODUCTION.idUsine) AS NumCollectivite
    FROM ASS_PRODUCTION;

    à tester...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Bon bah c'est nickel !
    Tu m'as bien maché le travail. Merci.
    Fantastique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2009, 10h23
  2. Propriétaire de dossier
    Par mixi dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2003, 15h15
  3. [TWebBrowser] ... et l'historique de I.E.
    Par Frederic dans le forum Composants VCL
    Réponses: 6
    Dernier message: 21/10/2002, 19h53
  4. Réponses: 2
    Dernier message: 26/06/2002, 14h16
  5. historique d'une disquette
    Par bashou dans le forum MFC
    Réponses: 2
    Dernier message: 24/06/2002, 12h35

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