OVH Cloud OVH Cloud

Mise à jour d'un solde de commande lors d'une livraison par déclencheur [MSDE 2000]

2 réponses
Avatar
Pierre Fauconnier
Bonjour

Dans le cadre d'une gestion de commande, je cherche à mettre à jour
automatiquement un solde à livrer.

J'ai une table tCommandes avec un clé primaire ComID et un champ ComSol qui
contient le solde à livrer.
J'ai une table tLivraisons avec un champ ComID et un champ LivQte.

A l'ajout d'une nouvelle livraison, j'ai un déclencheur qui retranche la qté
livrée de tLivraisons du champ ComSol de la table tCommandes.

Je souhaite que ComSol de tCommandes soit mis à jour lors d'une modification
de tLivraisons.

Exemple.
J'ai un ComSol de 500 dans tCommandes pour une commande X.
J'effectue une livraison de 200 pour la commande X et Comsol est mis à jour
à 300.
Je modifie cette livraison et change la qté de 200 vers 400. ComSol doit
refléter cette modification et être mis à jour à 100.
Dans tCommandes, j'ai donc ComSol = ComSol + deleted.livqte - updated.livqte
Pour cela, j'utilise le déclencheur suivant:
-----
ALTER TRIGGER ModifLivraison
ON dbo.tLivraisons
for update
as
if update (livqte)
begin
update tcommandes set comsol = comsol + d.livqte - u.livqte from
tcommandes c inner join deleted d on c.comid = d.comid inner join
updated u on c.comid = u.comid
end
-----
Mais je n'arrive pas à valider une modification dans ma table tLivraisons.

Où fais-je l'erreur?

D'avance, merci pour votre aide et votre patience.

--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam) (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci

2 réponses

Avatar
Oliv'
*Pierre Fauconnier que je salut a écrit *:
Bonjour

Dans le cadre d'une gestion de commande, je cherche à mettre à jour
automatiquement un solde à livrer.

J'ai une table tCommandes avec un clé primaire ComID et un champ
ComSol qui contient le solde à livrer.
J'ai une table tLivraisons avec un champ ComID et un champ LivQte.

A l'ajout d'une nouvelle livraison, j'ai un déclencheur qui retranche
la qté livrée de tLivraisons du champ ComSol de la table tCommandes.

Je souhaite que ComSol de tCommandes soit mis à jour lors d'une
modification de tLivraisons.

Exemple.
J'ai un ComSol de 500 dans tCommandes pour une commande X.
J'effectue une livraison de 200 pour la commande X et Comsol est mis
à jour à 300.
Je modifie cette livraison et change la qté de 200 vers 400. ComSol
doit refléter cette modification et être mis à jour à 100.
Dans tCommandes, j'ai donc ComSol = ComSol + deleted.livqte -
updated.livqte Pour cela, j'utilise le déclencheur suivant:
-----
ALTER TRIGGER ModifLivraison
ON dbo.tLivraisons
for update
as
if update (livqte)
begin
update tcommandes set comsol = comsol + d.livqte - u.livqte from
tcommandes c inner join deleted d on c.comid = d.comid inner
join updated u on c.comid = u.comid
end
-----
Mais je n'arrive pas à valider une modification dans ma table
tLivraisons.
Où fais-je l'erreur?



C'est inner join INSERTED (pas UPDATED)


D'avance, merci pour votre aide et votre patience.



oui il en faut ;-)))

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
Dernière chance http://www.outlookcode.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avatar
Pierre Fauconnier
Merci Oliv'.... Cela fonctionne

oui il en faut ;-)))



Merci d'en avoir ;-)

Bonne fin de semaine
--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Oliv'" a écrit dans le message
de news:

*Pierre Fauconnier que je salut a écrit
*:
Bonjour

Dans le cadre d'une gestion de commande, je cherche à mettre à jour
automatiquement un solde à livrer.

J'ai une table tCommandes avec un clé primaire ComID et un champ
ComSol qui contient le solde à livrer.
J'ai une table tLivraisons avec un champ ComID et un champ LivQte.

A l'ajout d'une nouvelle livraison, j'ai un déclencheur qui retranche
la qté livrée de tLivraisons du champ ComSol de la table tCommandes.

Je souhaite que ComSol de tCommandes soit mis à jour lors d'une
modification de tLivraisons.

Exemple.
J'ai un ComSol de 500 dans tCommandes pour une commande X.
J'effectue une livraison de 200 pour la commande X et Comsol est mis
à jour à 300.
Je modifie cette livraison et change la qté de 200 vers 400. ComSol
doit refléter cette modification et être mis à jour à 100.
Dans tCommandes, j'ai donc ComSol = ComSol + deleted.livqte -
updated.livqte Pour cela, j'utilise le déclencheur suivant:
-----
ALTER TRIGGER ModifLivraison
ON dbo.tLivraisons
for update
as
if update (livqte)
begin
update tcommandes set comsol = comsol + d.livqte - u.livqte from
tcommandes c inner join deleted d on c.comid = d.comid inner
join updated u on c.comid = u.comid
end
-----
Mais je n'arrive pas à valider une modification dans ma table
tLivraisons.
Où fais-je l'erreur?



C'est inner join INSERTED (pas UPDATED)


D'avance, merci pour votre aide et votre patience.



oui il en faut ;-)))

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
Dernière chance http://www.outlookcode.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~