Page 1 sur 1

Trigger et duplication devis

MessagePosté: Mar 13 Avr 2021 18:25
de signaldev
Bonjour,
J'ai créé une zone information libre N_AFFAIRE , et je veux que cette zone s'auto remplisse avec le numéro du devis lorsque celui ci est créé .
J'ai créé un trigger qui fait le job
Code: Tout sélectionner
ALTER TRIGGER [dbo].[TR_NAFFAIRE]
   ON  [dbo].[F_DOCENTETE]
   AFTER INSERT
AS
BEGIN
   DECLARE @TypDoc INTEGER , @NumDoc VARCHAR(10);
   SET @TypDoc = (SELECT DO_TYPE FROM inserted)
   SET @NumDoc = (SELECT DO_Piece FROM inserted)
   SET NOCOUNT ON
   IF (@TypDoc = 0)
      BEGIN
         UPDATE F_DOCENTETE
         SET N_AFFAIRE= @NumDoc
         WHERE DO_PIECE = @NumDoc
         IF @@ERROR <> 0
            ROLLBACK TRANSACTION
      END
END

Toutefois lorsque l'on utilise la fonction duplication d'un devis la zone N_AFFAIRE conserve l'ancienne valeur du devis dupliqué .
Quelqu'un pourrait il éclaircir ma lanterne . D'avance merci de votre aide .
Environnement : Sage 100C V7 SQL SERVER EXPRESS

Re: Trigger et duplication devis

MessagePosté: Ven 30 Avr 2021 09:30
de signaldev
Bonjour,
Je vais m'auto répondre
Voici comment j'ai procédé :
Code: Tout sélectionner
USE [MABASE]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TRG_NAFFAIRE_DEV]
   ON  [dbo].[F_DOCENTETE]
   FOR INSERT,UPDATE
AS
BEGIN
   DECLARE @TypDoc INTEGER ,@Domaine INTEGER, @NumDoc VARCHAR(10), @NumAff VARCHAR(10);
   SET NOCOUNT ON
   IF (SELECT TRIGGER_NESTLEVEL()) < 2
   BEGIN
   SELECT @Domaine=DO_DOMAINE,@TypDoc=DO_TYPE,@NumDoc = DO_Piece,@NumAff = N_AFFAIRE FROM inserted
      IF (@Domaine=0) AND (@TypDoc = 0) AND ((@NumDoc <> @NumAff) or (@NumAff IS  Null))
         BEGIN
            UPDATE F_DOCENTETE
            SET N_AFFAIRE= @NumDoc
            WHERE DO_PIECE = @NumDoc AND DO_Domaine=@Domaine AND DO_Type=@TypDoc
            --IF @@ERROR <> 0 ROLLBACK TRANSACTION
         END
   END
END

Ce trigger me permet de remplir automatiquement une zone info libre (ici N_AFFAIRE) avec le n° de devis lors de sa création ou sa duplication
Si ça peut rendre service tant mieux
Bonne journée à tous

Re: Trigger et duplication devis

MessagePosté: Ven 30 Avr 2021 20:57
de asr31
Bonjour,

En effet, sur les champs d’informations libres on ne peut jouer qu'en Update car en Insert, l'application ne remplit que les champs principaux et fait une seconde passe pour remplir les autres champs (dont les Infos. Libres).

Cdt,