Page 1 sur 1

Création glossaire rattaché à un article via trigger

MessagePosté: Ven 10 Avr 2015 12:12
de oliv35
Bonjour,

Environnement : GC L100 Pack SQL Server

Ma problématique utilisateur est de gérer des désignations comportant plus de 69 caractères.
La solution fonctionnelle retenue est logiquement l'utilisation d'un glossaire rattaché à un article.
En gros, l'article créé est XXX, le glossaire créé est alors XXX (désignation) et rattaché automatiquement à l'article XXX.

Je souhaite éviter à l'utilisateur d'avoir - manuellement - à créer le glossaire et le rattacher à l'article.
L'utilisateur n'a alors plus que, dans la vue descriptif de l'article XXX en cours de création, à double-cliquer sur le glossaire XXX déjà rattaché et à compléter le texte correspondant à sa longue désignation.

La solution technique consiste à mon sens à tout d'abord créer le glossaire correspondant à l'article (F_GLOSSAIRE) puis à en faire le rattachement à l'article en création (F_ARTGLOSS).
J'ai donc créé un trigger (ci-après) en AFTER INSERT sur F_ARTICLE.
Les entrées dans F_GLOSSAIRE et F_ARTGLOSS sont bien créées dynamiquement à la volée par le trigger ; toutefois, le glossaire rattaché n'apparaît pas dans la vue Glossaire de l'onglet Descriptif de la fiche Article.

Pouvez-vous m'indiquer quelle est l'action à générer en complément pour que le traitement soit complet ?
Merci par avance pour vos explications.

Bien cordialement,

Olivier

===
TRIGGER
===
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER TEST
ON F_ARTICLE
AFTER INSERT
AS
BEGIN
DECLARE @arref char(18), @glno int, @glintitule char(35)
SELECT @arref = AR_REF from inserted
SET @glno = 0

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON

-- Insert statements for trigger here
INSERT INTO F_GLOSSAIRE (GL_No,GL_Domaine,GL_Intitule, GL_Text) VALUES (@glno, @glno, @arref, @arref)
SELECT @glno = GL_No FROM F_GLOSSAIRE WHERE GL_Intitule=@arref
INSERT INTO F_ARTGLOSS (AR_REF, GL_No, AGL_Num) VALUES (@arref, @glno, 0)
END
GO

Re: Création glossaire rattaché à un article via trigger

MessagePosté: Sam 11 Avr 2015 00:07
de oliv35
Bonsoir,

J'ai effectué quelques recherches et modifié le trigger afin d'enlever les espaces contenues dans les chaines de caractères traitées.
En effet, la désignation du glossaire était créée avec la référence article (comme prévue) et complétée avec des espaces en partie droite (imprévus et indésirables) ; dès lors, le rattachement entre l'article et sa désignation (SELECT) ne pouvait que rendre un résultat nul, non exploitable pour l'insert de rattachement du glossaire à son article (dans F_ARTGLOSS).

Le sujet est résolu, le bon code du trigger est ci-dessous :
===
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER TEST
ON F_ARTICLE
AFTER INSERT
AS
BEGIN
DECLARE @arref char(18), @glno int, @glintitule char(35)
SELECT @arref = AR_REF from inserted
SET @glno = 0

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON

-- Insert statements for trigger here
INSERT INTO F_GLOSSAIRE (GL_No,GL_Domaine,GL_Intitule,GL_Text,GL_PeriodeDeb,GL_PeriodeFin) VALUES (0,0,RTRIM(@arref),RTRIM(@arref), '19000101 00:00:00', '19000101 00:00:00')
SELECT @glno = GL_No FROM F_GLOSSAIRE WHERE RTRIM(GL_Intitule)=RTRIM(@arref)
INSERT INTO F_ARTGLOSS (AR_REF, GL_No, AGL_Num) VALUES (RTRIM(@arref), @glno, 0)
END
GO