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 :

[A-00] Gestion de liste de prix par années: Pb de Date


Sujet :

Modélisation

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 3
    Points
    3
    Par défaut [RESOLU] [A-00] Gestion de liste de prix par années: Pb de Date
    Bonjour à tous,

    Je rencontre un petit souci de conception que je me résoud à vous soumettre enfin:

    J'ai une table de gestion de prix que je ne sais pas structurer. J'alterne depuis maintenant trois ans entre deux options qui ne sont pas satisfaisantes:

    Solution 1: Avec le détail des années
    Ici, ma table est structurée ainsi:
    - Infos de la transaction (acheteur, vendeur, produit, prix)
    - Date
    - Version
    - Année
    J'ai donc une liste de prix par année. Le champ date me donne la date du prix. J'ai crée un champ Version pour les changements de prix en cours d'années. Version 0 est le dernier prix, Version 1 celui d'avant, etc... Ici, le champ Version se limite à l'année en cours, cad que chaque années, au 1er Janvier, chaque transaction n'a qu'une version 0. Pendant l'année, des version 1+ apparaissent.
    Le +: je peux assez facilement comparer mes listes de prix d'une année sur l'autre.
    Le -: comme seulement 50% de mes prix changent chaque années, je fais des copié collé d'une année sur l'autre en Janvier, ce qui fait grossir ma table

    Solution 2: Sans le détail des années
    Ici, ma table est structurée ainsi:
    - Infos de la transaction (acheteur, vendeur, produit, prix)
    - Date
    - Version
    Ici, la Version 0 me donne tous les prix actuels. Je peux toujours consulter les anciens prix par date, la version 1 étant celle du dernier changement de prix.
    Le +: je réduis la taille de ma table de 50% puisque je n'ai pas de doublons
    Le -: je suis incapable (je n'ai pas trouvé plutôt) de créer la liste de prix d'une année anterieure. En effet, pour extraire la liste de prix 2002, il faudrait que je sois capable de filtrer pour chaque transaction, le dernier update jusqu'a 2002 (mais pas après).

    Y a-t-il un moyen de résoudre le problème, cad, garder la solution 2, tout en étant capable de sortir des listes par années?

    Je vous ai mis ci-dessous l'exemple d'un prix géré des deux manières. Une transaction est à 12€ en 2000 et change de prix en Juillet 2004.

    Merci à ceux qui m'ont lu jusqu'au bout !
    bonne journée
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour holybout, je ne comprends pas ce que contient le champ Date (que tu devrais renommer)et le problème que tu exposes. Si c'est la date de transaction, la liste des prix 2002 est la liste des versions pour lesquelles la date de transaction est comprise entre le #01/01/2002# et le #12/31/2002#
    ----
    Peut-être faut-il envisager une solution hybride, puisque les prix changent, tu as une période de prise en compte (une date de début et une date de fin).
    De cette manière les prix actuels sont les prix dont la date de fin n'est pas renseignée; lors d'un changement de prix la date de fin de l'ancien prix correspond à la date de prise en compte du nouveau tarif.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Salut ilank

    Le champ Date est en fait la date de la mise à jour/création du prix. Soit l'ouverture du flux, soit la date ou un flux existant a changé de prix.

    Faut que je m'approprie un peu ta solution, mais elle me semble vraiment pas mal. Je regarde ça !

    merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Salut holybout,
    en lisant ton enoncé et ma proposition j'ai comme un doute.
    A priori tu as besoin de deux tables et non d'une seule.
    Une table pour les produits et leur prix, une table pour les transactions.
    Une transation se fait avec le prix en vigueur à la date de transaction; donc tu n'as pas besoin de conserver une liste de prix et leur changement, il faut juste indiquer dans la table des produits le prix en vigueur. Ce prix tant qu'il est inchangé est repris dans la table transaction. En listant tes transactions tu obtiendras, la liste des prix.
    Tu n'auras ici qu'une ligne par produit dans la table Produits et une ligne par transaction par transaction. Et la liste des prix est fournie par la table des transactions.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    De ce que je comprend de ta propal, la solution serait:

    une table qui donne les prix actuels
    une table qui suit les transactions et donne donc les prix appliqués concrètement

    Pour être franc, j'ai déjà une table qui suit mes transaction en dehors de celle-ci qui suit les prix. Par contre, je suis obligé de suivre les prix et leurs dates séparément pour:

    - faire des analyses (ex: simuler les volumes 2009 avec les prix 2008 et avec les prix 2009)
    - vérifier que mes transactions ont bien appliqué le bon prix. Même dans le passé, j'ai des erreurs dans les transac. C'est à dire qu'on peut très bien avoir facturé tout 2008 à 5€, alors que ma table des prix donne 10€. Dans ce cas là, j'ai besoin de savoir quel était le prix théorique sur le mois
    - je n'ai pas l'infos des transactions pour tous mes flux cad que j'ai des prix dont je ne peux pas constater l'application, c'est du théorique

    En tous cas, trop fort, vu le problème, je ne pensais pas trouver quelqu'un qui comprenne aussi facilement

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    D'accord, je comprends mieux. Exceptée la table des prix avec les dates de mise en vigueur et de fin; n'ayant jamais du utiliser une telle solution je ne peux t'en dire plus.

  7. #7
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonjour holybout
    Tu créer un formulaire "Dialogue état des périodes" avec un controle "Date début" un controle "Date fin" et un bouton "ok" pour ouvrir ton "Etat ou Formulaire de liste des prix"
    Tu peux mettre dans ta requête dans le champ "Critère" de la "date commande"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Est Pas Null Et Entre [Forms]![Période de l'état]![Date début] Et [Forms]![Période de l'état]![Date fin]
    ainsi tu peux filtrer tes États ou formulaires de ta liste des prix
    itzik92

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Salut itzik92
    Imaginons le scénario en pièces jointes ci-dessous. Comment fais-je pour sortir une liste de prix au 31/12/2004? C'est con, c'est logique, mais moi pas trouver
    Merci bcp
    Images attachées Images attachées  

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour les gens,
    holybout la lsite de prix pour une date donnée X, correspond au prix pour lesquels la Date X est comprise entre la date de début et la date de fin; puisque les prix toujours en vigueur n'ont pas de date de fin, il faudra remplacer la valeur Null par la date du jour.

    Exemple de requête : ici j'appelle Liste de prix la table des prix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Parameters [DateX] datetime;
    SELECT Produit,Prix
    FROM [Liste de Prix] WHERE DateX Between [Date début] AND Nz([Date de fin],Date());

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci bcp de m'avoir offert ce petit moment de solitude . La réponse était déjà dans le msg au dessus, mais je n'avais pas connecté les neurones.

    Je teste ça demain de manière plus approfondie. J'ai juste 65,000 dates de fin à remplir

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

Discussions similaires

  1. Labirynthe avec gestion des listes par lionceau
    Par forum dans le forum Télécharger
    Réponses: 0
    Dernier message: 23/05/2011, 10h33
  2. Réponses: 3
    Dernier message: 06/01/2011, 13h11
  3. Filtrer DataGridView par Années extraites de dates d'une Combobox
    Par zizou2007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/04/2008, 14h45
  4. liste des tables par base
    Par rupert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2004, 09h38

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