[SQL 2008 - Win7 - Gescom v8.01] Problème sur un trigger
Posté: Lun 16 Nov 2015 13:22
Bonjour à tous !
Etant très vite limité dès qu'une requête SQL devient un peu complexe, je viens faire appel à vous et vos lumières...
Je suis en train d'essayer de préparer un trigger qui me permettra de récupérer dans 2 infos libres sur les lignes de documents d'achats, le compte général et la section analytique de l'article en fonction de la catégorie comptable du fournisseur.
Voilà ce que j'ai commencé à écrire mais j'ai un souci (peut-être pas grand chose) au niveau des parenthèses et je n'arrive pas à aller plus loin... :
J'ai le problème sur les deux parenthèses se trouvant sur les lignes avec les points-virgules.
Si, en plus, vous pourriez me dire si ce que je fais parait cohérent, ce serait encore plus mieux top !!!
Merci d'avance
Funkydiem
Etant très vite limité dès qu'une requête SQL devient un peu complexe, je viens faire appel à vous et vos lumières...
Je suis en train d'essayer de préparer un trigger qui me permettra de récupérer dans 2 infos libres sur les lignes de documents d'achats, le compte général et la section analytique de l'article en fonction de la catégorie comptable du fournisseur.
Voilà ce que j'ai commencé à écrire mais j'ai un souci (peut-être pas grand chose) au niveau des parenthèses et je n'arrive pas à aller plus loin... :
- Code: Tout sélectionner
CREATE TRIGGER RECUP_SECTION
ON F_DOCLIGNE
AFTER INSERT,UPDATE
AS
DECLARE @article varchar(19),
@cat_cpta smallint,
@section varchar(13),
@compte_gen varchar(13)
SET @article= (SELECT AR_Ref FROM inserted);
SET @cat_cpta= (SELECT F_DOCENTETE.N_CatCompta FROM F_DOCENTETE INNER JOIN F_DOCLIGNE ON F_DOCENTETE.DO_Piece=F_DOCLIGNE.DO_Piece);
SET @section= (CASE WHEN EXISTS (SELECT ACP_ComptaCPT_CompteA
FROM F_ARTCOMPTA
WHERE AR_Ref=@article
AND ACP_Champ=@cat_cpta
AND ACP_Type=1)
THEN (SELECT ACP_ComptaCPT_CompteA
FROM F_ARTCOMPTA
WHERE AR_Ref=@article
AND ACP_Champ=@cat_cpta
AND ACP_Type=1)
ELSE (SELECT FCP_ComptaCPT_CompteA
FROM F_FAMCOMPTA
WHERE FA_CodeFamille=(SELECT FA_CodeFamille
FROM F_ARTICLE
WHERE @article=AR_Ref)
AND FCP_Champ=@cat_cpta
AND FCP_Type=1)
);
SET @compte_gen= (CASE WHEN EXISTS (SELECT ACP_ComptaCPT_CompteG
FROM F_ARTCOMPTA
WHERE AR_Ref=@article
AND ACP_Champ=@cat_cpta AND ACP_Type=1)
THEN (SELECT ACP_ComptaCPT_CompteG
FROM F_ARTCOMPTA
WHERE AR_Ref=@article
AND ACP_Champ=@cat_cpta
AND ACP_Type=1)
ELSE (SELECT FCP_ComptaCPT_CompteG
FROM F_FAMCOMPTA
WHERE FA_CodeFamille=(SELECT FA_CodeFamille
FROM F_ARTICLE
WHERE @article=AR_Ref)
AND FCP_Champ=@cat_cpta
AND FCP_Type=1)
);
BEGIN
-- 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_DOCLIGNE (Section, CompteG)
SELECT @section, @compte_gen
END
GO
J'ai le problème sur les deux parenthèses se trouvant sur les lignes avec les points-virgules.
Si, en plus, vous pourriez me dire si ce que je fais parait cohérent, ce serait encore plus mieux top !!!
Merci d'avance
Funkydiem