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

Développement SQL Server Discussion :

Mise à jour Stored procédure


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut Mise à jour Stored procédure
    Salut tout le monde, Je suis entrain d'écrire une stored procedure qui update mon "Inventaire".

    Ma base de donnée possède 6 tables. Sois "Produit", "Inventaire", "Emplacement", "Departement", "Fournisseur", "Localisation".

    Chaque table possède une clé primaire sous le nom de "id".

    J'ai fait une stored procedure qui fais un select de certain champs, jusqu'à là, tout va bien!

    Voici les champs que je selectionne -> CodeProduit, DescriptionProduit, QuantiteInventaire, Emplacement, Departement, compagnieInventaire, Fournisseur, taxProduit, prixProduit.

    Le problème survient lorsque je fais un update.

    Exemple:
    CodeProduit : 45a.......45b
    DescriptionProduit : livre......crayon
    QuantiteInventaire : 4........2
    Emplacement : Mur droit ....... Mur droit
    Departement : dept1.........dept1
    compagnieInventaire : comp1.......comp2
    Fournisseur : fourn1.........fourn2
    taxProduit : vrai.........vrai
    prixProduit: 2,00......5,00

    Donc, si je décide de modifier l'emplacement du "crayon" pour Mur Gauche, considérant que j'ai le même "id" pour l'emplacement, sois exemple id=1 pour le mur droit. Evidemment, les 2 articles vont changés d'Emplacement. Ce que je ne veux pas, considérant que je n'ai que déplacer le crayon!


    Voici ma procédure :

    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
     
    ALTER PROCEDURE [dbo].[mettreAjourInventaire] 
    	-- Add the parameters for the stored procedure here
    	@idInventaire int,
    	@idProduit int,
    	@idDepartement int,
    	@idFournisseur int,
    	@idEmplacement int,
    	@code nvarchar(30),
    	@Description nvarchar(70),
    	@Quantite int,
    	@Emplacement nvarchar(50),
    	@Departement nvarchar(30),
    	@Compagnie nvarchar(30),
    	@Fournisseur nvarchar(30),
    	@Taxable bit,
    	@Prix float,
    	@estDevalue bit,
    	@estSupprime bit
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
     
    	update   db_produit
    	set		 db_produit.code_produit = @code,
    			 db_produit.ProduitDescription = @Description, 
    			 db_produit.ProduittaxeTPS = @Taxable, 
    			 db_produit.Réserver1 = @Prix, 
    			 ProduitEst_devalué = @estDevalue, 
    			 ProduitEst_supprimé=@estSupprime
     
    	where	db_produit.id = @idProduit
     
     
    	update  db_inventaire
    	set		db_inventaire.InventaireQuantité = @Quantite, 
    		    db_inventaire.InventaireCompagnie = @Compagnie
     
    	where	db_Inventaire.ID = @idInventaire
     
     
    	update  db_emplacement
    	set		db_emplacement.EmplacementDescription = @Emplacement
     
    	where	db_emplacement.id = @idEmplacement
     
     
    	update  db_departement
    	set		DepartementCode = @Departement
     
    	where   db_departement.id = @idDepartement
     
     
    	update  db_fournisseur
    	set		FournisseurCode = @Fournisseur
     
    	where   db_fournisseur.id = @idFournisseur
    END
    Bon, je comprend que je ne dois pas faire "where db_emplacement.id = @idEmplacement". Mais, je n'arrive pas à trouver une méthode qui va sélectionner la bonne item sans toucher au Id!

    Si quelqu'un pourrait m'aider ça serait grandement apprécié!

    Ps: J'ai le même probleme pour département et fournisseur!

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Serait-il possible d'avoir le schéma des tables ? Sans cela, on ne voit pas comment sont organisées les données, et on ne peut donc pas te guider, ni te proposer des requêtes. Notamment, on ne sait pas comment un produit est affecté à un emplacement.

    Sinon, le principe est simple : il faut faire une mise à jour de l'emplacement pour l'article considéré, c'est-à-dire que la clause WHERE contient id_produit = @idProduct

Discussions similaires

  1. [WD20] Mise à jour de procédures stockées
    Par JG_33 dans le forum WinDev
    Réponses: 3
    Dernier message: 24/09/2015, 19h06
  2. [WD14] Erreur lors d'une mise à jour de procédure stocké
    Par klbsjpolp dans le forum HyperFileSQL
    Réponses: 0
    Dernier message: 16/07/2009, 18h45
  3. Réponses: 5
    Dernier message: 13/07/2006, 09h39
  4. Réponses: 1
    Dernier message: 27/04/2006, 18h22
  5. Réponses: 2
    Dernier message: 05/12/2005, 16h39

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