Trigger et duplication devis

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

Trigger et duplication devis

de signaldev » Mar 13 Avr 2021 18:25

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
Posteur néophyte
Posteur néophyte
 
Messages: 8
Inscription: Ven 30 Mai 2014 15:49

Re: Trigger et duplication devis

de signaldev » Ven 30 Avr 2021 09:30

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
Posteur néophyte
Posteur néophyte
 
Messages: 8
Inscription: Ven 30 Mai 2014 15:49

Re: Trigger et duplication devis

de asr31 » Ven 30 Avr 2021 20:57

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,
ASR31

Les aspirations des pauvres ne sont pas très éloignées des réalités des riches.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2960
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité