Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > ADO.NET
ADO.NET Forum d'entraide sur le développement avec les services d'accès aux données disponibles avec ADO.NET.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/04/2012, 04h52   #1
beaudelaire
Invité de passage
 
Inscription : janvier 2011
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 71
Points : 2
Points : 2
Par défaut Mettre à jour un champ d'une BD

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!
beaudelaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2012, 08h20   #2
Reward
Membre éprouvé
 
Développeur .NET
Inscription : août 2004
Messages : 123
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : août 2004
Messages : 123
Points : 402
Points : 402
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 :
1
2
UPDATE ARTICLES, SET PrixUnitaire = 100 
WHERE article_id = 1;
Reward est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 04h26   #3
beaudelaire
Invité de passage
 
Inscription : janvier 2011
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 71
Points : 2
Points : 2
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
beaudelaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 08h27   #4
gcorbineau
Membre Expert
 
Homme Guillaume
Développeur .NET
Inscription : juillet 2006
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2006
Messages : 854
Points : 1 296
Points : 1 296
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.
gcorbineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 08h57   #5
Reward
Membre éprouvé
 
Développeur .NET
Inscription : août 2004
Messages : 123
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : août 2004
Messages : 123
Points : 402
Points : 402
Comme le dit gcorbineau, une évolution de ton modèle de données sera nécessaire pour prendre en compte ton besoin.
Reward est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2012, 14h36   #6
Kropernic
Membre Expert
 
Avatar de Kropernic
 
Homme
Analyste / Programmeur / DBA
Inscription : juillet 2006
Messages : 1 935
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Analyste / Programmeur / DBA
Secteur : Distribution

Informations forums :
Inscription : juillet 2006
Messages : 1 935
Points : 1 470
Points : 1 470
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).
Kropernic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2012, 09h55   #7
VITALTH
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 175
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 175
Points : 66
Points : 66
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
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 14h46   #8
peregna2007
Membre habitué
 
Homme
Inscription : mars 2008
Messages : 158
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mars 2008
Messages : 158
Points : 121
Points : 121
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.
peregna2007 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/07/2012, 14h53   #9
Bluedeep
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 6 555
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 52
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 6 555
Points : 13 939
Points : 13 939
Citation:
Envoyé par peregna2007 Voir le message
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.
Oui, la logique veux de toute manière d'avoir une table d'historique pour les lignes et les en-têtes de facture (si on change l'adresse d'un client, on doit pourtant pouvoir sortir un double d'une facture avant le changement d'adresse où apparait l'ancienne).
__________________

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
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h43.


 
 
 
 
Partenaires

Hébergement Web