Trigger SQL DGR
Modérateurs: Super-Apogea, Super Modérateur
7 messages
|Page 1 sur 1
Trigger SQL DGR
Bonsoir,
j'ai écrit un trigger pour calculer, en fonction de la date de livraison, la DLUO minimale garantie à la livraison des produits.
Celui-ci ne se déclenche que lorsqu'on modifie la date de livraison, jamais lorsqu'on crée un document.
Pourriez-vous m'aider à résoudre ce problème.
CREATE TRIGGER [dbo].[VIT_DGR] ON [dbo].[F_DOCLIGNE] AFTER INSERT, UPDATE AS
--Declarations
DECLARE @Type smallint,
@cbMarq int,
@DL_Qte numeric(24,6),
@DO_DateLivr smalldatetime,
@AR_Ref varchar (17),
@ContratDate int
--Chargement des Variables
SELECT @Type = inserted.DO_Type,
@DL_Qte = inserted.DL_Qte,
@DO_DateLivr = inserted.DO_DateLivr,
@cbMarq = inserted.cbMarq,
@AR_Ref = inserted.AR_Ref
FROM INSERTED
--Initialisation Contrat Date
SET @ContratDate = (SELECT ContratDate From F_ARTICLE Where AR_Ref = @AR_Ref)
--Test Documents Ventes DE/BC/BL
IF (@Type in (0,1,2,3))
BEGIN
--Insertion DGR
UPDATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
j'ai écrit un trigger pour calculer, en fonction de la date de livraison, la DLUO minimale garantie à la livraison des produits.
Celui-ci ne se déclenche que lorsqu'on modifie la date de livraison, jamais lorsqu'on crée un document.
Pourriez-vous m'aider à résoudre ce problème.
CREATE TRIGGER [dbo].[VIT_DGR] ON [dbo].[F_DOCLIGNE] AFTER INSERT, UPDATE AS
--Declarations
DECLARE @Type smallint,
@cbMarq int,
@DL_Qte numeric(24,6),
@DO_DateLivr smalldatetime,
@AR_Ref varchar (17),
@ContratDate int
--Chargement des Variables
SELECT @Type = inserted.DO_Type,
@DL_Qte = inserted.DL_Qte,
@DO_DateLivr = inserted.DO_DateLivr,
@cbMarq = inserted.cbMarq,
@AR_Ref = inserted.AR_Ref
FROM INSERTED
--Initialisation Contrat Date
SET @ContratDate = (SELECT ContratDate From F_ARTICLE Where AR_Ref = @AR_Ref)
--Test Documents Ventes DE/BC/BL
IF (@Type in (0,1,2,3))
BEGIN
--Insertion DGR
UPDATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
- Posteur néophyte
- Messages: 16
- Inscription: Sam 24 Mai 2008 12:10
- Localisation: TOULOUSE
Re: Trigger SQL DGR
Bonjour,
C'est normal ... Tu fais un Update F_DOCLIGNE ....
Il faut faire un create F_DOCLIGNE en création de ligne
C'est pour ça qu'on se retrouve en général avec 3 triggers pour chaque modif :
un en creation
un en modification
un en suppression
Cdlt
C'est normal ... Tu fais un Update F_DOCLIGNE ....
Il faut faire un create F_DOCLIGNE en création de ligne
C'est pour ça qu'on se retrouve en général avec 3 triggers pour chaque modif :
un en creation
un en modification
un en suppression
Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Re: Trigger SQL DGR
Bonjour,
Le code devient alors en insertion :
CREATE TRIGGER [dbo].[VIT_DGR] ON [dbo].[F_DOCLIGNE] AFTER INSERT AS
--Declarations
DECLARE @Type smallint,
@cbMarq int,
@DL_Qte numeric(24,6),
@DO_DateLivr smalldatetime,
@AR_Ref varchar (17),
@ContratDate int
--Chargement des Variables
SELECT @Type = inserted.DO_Type,
@DL_Qte = inserted.DL_Qte,
@DO_DateLivr = inserted.DO_DateLivr,
@cbMarq = inserted.cbMarq,
@AR_Ref = inserted.AR_Ref
FROM INSERTED
--Initialisation Contrat Date
SET @ContratDate = (SELECT ContratDate From F_ARTICLE Where AR_Ref = @AR_Ref)
--Test Documents Ventes DE/BC/BL
IF (@Type in (0,1,2,3))
BEGIN
--Insertion DGR
CREATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
Le code devient alors en insertion :
CREATE TRIGGER [dbo].[VIT_DGR] ON [dbo].[F_DOCLIGNE] AFTER INSERT AS
--Declarations
DECLARE @Type smallint,
@cbMarq int,
@DL_Qte numeric(24,6),
@DO_DateLivr smalldatetime,
@AR_Ref varchar (17),
@ContratDate int
--Chargement des Variables
SELECT @Type = inserted.DO_Type,
@DL_Qte = inserted.DL_Qte,
@DO_DateLivr = inserted.DO_DateLivr,
@cbMarq = inserted.cbMarq,
@AR_Ref = inserted.AR_Ref
FROM INSERTED
--Initialisation Contrat Date
SET @ContratDate = (SELECT ContratDate From F_ARTICLE Where AR_Ref = @AR_Ref)
--Test Documents Ventes DE/BC/BL
IF (@Type in (0,1,2,3))
BEGIN
--Insertion DGR
CREATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
- Posteur néophyte
- Messages: 16
- Inscription: Sam 24 Mai 2008 12:10
- Localisation: TOULOUSE
Re: Trigger SQL DGR
Re:
Juste pense à tes noms de Trigger :
CREATE TRIGGER [dbo].[VIT_DGR_INS] ON [dbo].[F_DOCLIGNE] AFTER INSERT AS
Cdlt
Juste pense à tes noms de Trigger :
CREATE TRIGGER [dbo].[VIT_DGR_INS] ON [dbo].[F_DOCLIGNE] AFTER INSERT AS
Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Re: Trigger SQL DGR
Merci pour la précision sur le nom des triggers.
je m'interroge sur la fonction suivante :
--Insertion DGR
CREATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
C'est à la création de la ligne que l'information libre est mise à jour ?
merci d'avance.
je m'interroge sur la fonction suivante :
--Insertion DGR
CREATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
END
C'est à la création de la ligne que l'information libre est mise à jour ?
merci d'avance.
- Posteur néophyte
- Messages: 16
- Inscription: Sam 24 Mai 2008 12:10
- Localisation: TOULOUSE
Re: Trigger SQL DGR
Bonjour,
A la création de la ligne, l'info libre est mise à jour... Mais la création de la ligne se fait en UN seul INSERT ...
Regarde dans la manuel Strucfic. Tu y trouveras un exemple...
Sinon, regarde les Triggers de SAGE dans les bases.
Cdlt
A la création de la ligne, l'info libre est mise à jour... Mais la création de la ligne se fait en UN seul INSERT ...
Regarde dans la manuel Strucfic. Tu y trouveras un exemple...
Sinon, regarde les Triggers de SAGE dans les bases.
Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.
IMPERIAL
Re: Trigger SQL DGR
Bonjour,
Que ce soit dans le trigger d'insert ou celui d'update, il faut mettre à jour (donc update) l'information libre DGR :
--Insertion DGR
UPDATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
A moins que j'ai loupé quelque chose...
Cordialement,
Que ce soit dans le trigger d'insert ou celui d'update, il faut mettre à jour (donc update) l'information libre DGR :
--Insertion DGR
UPDATE F_DOCLIGNE
SET DGR = (SELECT DATEADD (DAY,@ContratDate,@DO_DateLivr))
WHERE F_DOCLIGNE.CbMarq = @cbMarq
A moins que j'ai loupé quelque chose...
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
7 messages
|Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité