Création glossaire rattaché à un article via trigger

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

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

Création glossaire rattaché à un article via trigger

de oliv35 » Ven 10 Avr 2015 12:12

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
Dernière édition par oliv35 le Sam 11 Avr 2015 00:32, édité 1 fois.
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: Ven 10 Avr 2015 11:58

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

de oliv35 » Sam 11 Avr 2015 00:07

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
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: Ven 10 Avr 2015 11:58


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