|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 71 ![]() |
Bonjour:
j'ai une BD qui gère les ventes d'un établissement commercial. La table ARTICLES(id_article, désignation, PrixUnitaire). Ce que j'aimerai savoir est comment mettre à jour par exemple le PrixUnitaire d'un article si le prix de ce dernier venait à changer, sans pour autant mettre à jour les précédents enregistrements qui ont été fait avec un prix différent. Merci d'avance! |
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() ![]() Développeur .NET Inscription : août 2004 Messages : 123 ![]() |
Salut,
Tu dois sélectionner l'enregistrement à mettre à jour en fonction de ton article grâce à son id. Exemple: Tu dois changer le prix d'un article dont la désignation est "paire de baskets". Tu récupère son id (id_article). Tu fais ensuite une requête pour la mise à jour du genre : Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 71 ![]() |
Le problème est que j'établis les factures par la même occasion. Imaginons que je veuille retrouver la commande passé par un client à une certaine date antérieure à celle où j'ai modifié le prix de l'article. Je voudrais savoir si la mise à jour du prix de l'article affectera sur les commandes effectuées avec l'ancien prix
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Guillaume Développeur .NET Inscription : juillet 2006 Messages : 854 ![]() |
Dans le cas présent, oui, par rapport à ton besoin tu dois créer une table de prix pour chaque article avec la période pendant laquelle le prix était valable.
De cette tu peux utiliser ton article comme tu veux, et quand tu édites une facture tu récupères le prix valide lors de l’établissement de la facture. |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() ![]() Développeur .NET Inscription : août 2004 Messages : 123 ![]() |
Comme le dit gcorbineau, une évolution de ton modèle de données sera nécessaire pour prendre en compte ton besoin.
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Analyste / Programmeur / DBA Inscription : juillet 2006 Messages : 1 935 ![]() |
Le plus simple est je pense d'ajouter une colonne de type Datetime dans ta table ARTICLES qui prendra GetDate() en valeur par défaut. De cette manière tu pourras savoir à quel moment ce prix est entré en application et tu pourras faire les requêtes adéquates.
__________________
Kropernic (anciennement Griftou). |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : mars 2008 Messages : 175 ![]() |
En revanche tu ne mettras pas à jour (pas de "UPDATE") lors du changement de prix : tu ajouteras un enregistrement.
Imaginons que ta table à comme clé primaire "id_article" + "DateModif" : Ta requête devient : Code sql :
INSERT INTO articles (id_article, designation, prixunitaire) VALUES (1,'Basket',100); A priori tu n'a pas à mettre à jour la date de Modif (nvx champs DateModif) puisque si tu utilises la proposition de Kropernic, elle a pour valeur par défaut GetDate(). Tu peux également créer un champs clé primaire dans ta table de type AutoIncrement (selon le type de ta BD) et enlever la clé sur id_article, la requête resterait à prioris la même. Quand tu voudras sélectionner le prix d'un article à une date précise tu auras : Code sql :
SELECT prixunitaire FROM articles WHERE id_article = TonArticle AND datemodif = TaDate |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : mars 2008 Messages : 158 ![]() |
Bonjour à tous,
Je pense que devrais avoir une table VENTES où tu retraces toutes les ventes. Ainsi ta table article reste intacte. Même si tu changes le prix unitaire, les anciens prix de la table VENTES resteront inchangés. Les nouvelles ventes prendront les nouveaux prix. |
|
|
10
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 555 ![]() |
Citation:
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
|
10
|
Copyright © 2000-2013 - www.developpez.com