Mise à jour d'un solde de commande lors d'une livraison par déclencheur [MSDE 2000]
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Pierre Fauconnier <pierre.fauconnier@nospam.nospam> 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/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Merci Oliv'.... Cela fonctionne
oui il en faut ;-)))
Merci d'en avoir ;-)
Bonne fin de semaine
--
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
"Oliv'" <SUPPRIMERCECIcatteau@ricour-assurances.fr> a écrit dans le message
de news: O0rkVCD9GHA.4012@TK2MSFTNGP04.phx.gbl...
*Pierre Fauconnier <pierre.fauconnier@nospam.nospam> 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/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~