Trigger SQL - MAJ Infos libres dans F_DOCLIGNE

Forum consacré aux développements d'applications interfacées avec les logiciels Sage

Modérateurs: Super Modérateur, Modérateurs

Règles du forum
Merci de prendre connaissance des règles d'utilisation du forum

Avant de poster un nouveau message, utilisez la fonction RECHERCHER. Indiquez la VERSION de votre logiciel et toutes informations utiles à la résolution de votre question. Ne rédigez pas vos messages en MAJUSCULES. Soyez courtois et pensez aux formules de POLITESSE d'usage. Les messages à vocation COMMERCIALE ou PUBLICITAIRE seront supprimés.

*** LORSQU'UN SUJET EST RESOLU, SON AUTEUR DOIT EDITER LE 1ER MESSAGE DU SUJET EN HAUT DE PAGE ET COCHER "SUJET RESOLU" ***

Trigger SQL - MAJ Infos libres dans F_DOCLIGNE

Messagede olivier06 » Jeu 10 DĂ©c 2009 12:17

Bonjour,

Sur une Gescom 15.50 SQL Server, je dois faire un trigger qui à chaque insertion de nouvelle ligne dans un document doit écrire dans une info libre de type ligne de documents.

Mais le trigger ne fonctionne pas, je n'ai aucune erreur, mais l'info libre reste désespérément vide.

Pouvez-vous m'aider en me disant ce qui cloche dans mon code svp ??

Note : j'ai simplifié le trigger pour écrire simplement "TEST" dans une info libre "Commentaire"

Code: Tout sélectionner
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER TRIGGER CALCUL_PRIX_INFOLIBRE ON F_DOCLIGNE
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON

DECLARE @Cbmarq int

SELECT @Cbmarq=Cbmarq FROM INSERTED

UPDATE F_DOCLIGNE
SET Commentaire='TEST'
FROM F_DOCLIGNE
WHERE CbMarq=@Cbmarq
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
olivier06
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: Ven 23 Oct 2009 16:38

Re: Trigger SQL - MAJ Infos libres dans F_DOCLIGNE

Messagede OokieDookie » Lun 14 DĂ©c 2009 19:15

Bonjour,

Un petit cas d'école Sage, à adapter :

La gestion des informations libres dans les applications Sage 100 diffère des autres champs lors de
l’insertion (requête INSERT) d’un enregistrement.
En effet, lors de l’insertion d’un enregistrement, dans un premier temps les différents champs sont
insérés (requête INSERT) alors que les informations libres de la ligne sont ensuite mises à jour par
une requĂŞte UPDATE.
Par conséquent, la modification d’informations libres par l’intermédiaire d’un trigger n’est possible que
dans les conditions suivantes :
- le trigger doit s’exécuter lors de la mise à jour de l’enregistrement (trigger FOR UPDATE) ;
- un contrôle de la valeur courante de l’information libre (avant UPDATE) doit être effectué par
le trigger avant la mise à jour l’information libre. Dans le cas contraire, un appel récursif du
trigger se produira (UPDATE successifs déclenchés par le trigger).
Exemple : Stockage de l’utilisateur du domaine et de la date à laquelle une ligne de document à été
créée ou modifiée.
Sur une base de données Sage 100 Gestion Commerciale pour SQL Server, les informations libres
ligne de document suivantes doivent être créées :
- Utilisateur (texte de 50 caractères)
- Date_saisie (date)

Code: Tout sélectionner
CREATE TRIGGER Trace_User ON F_DOCLIGNE
FOR UPDATE
AS
DECLARE @Utilisateur varchar(50) /* Info libre ligne Utilisateur (Texte de 50
caractères) */
DECLARE @Date_saisie smalldatetime /* Info libre ligne Date_saisie (Date) */
DECLARE @Date_saisieOld smalldatetime
/* Récupération de l'utilisateur du poste (dans le domaine NT) et de la date
courante : */
SELECT @Utilisateur = nt_username, @Date_saisie = getdate() FROM
master..sysprocesses WHERE spid=@@SPID
/* Récupération de l'ancienne date de saisie de la ligne modifiée (Date_saisieOld): */
SELECT @Date_saisieOld = DL.Date_saisie
FROM F_DOCLIGNE DL JOIN INSERTED INS
ON DL.CBMARQ = INS.CBMARQ
/* Mise Ă  jour des infos libres Utilisateur et Date_saisie de la ligne si la
nouvelle Date_saisie
est différente de l'ancienne (Date_saisieOld) ou si l'ancienne n'est pas renseignée
(NULL) : */
IF @Date_saisieOld <> @Date_saisie OR @Date_saisieOld IS NULL
BEGIN
UPDATE DL SET DL.Utilisateur = @Utilisateur, DL.Date_saisie = @Date_saisie
FROM F_DOCLIGNE DL JOIN INSERTED INS
ON DL.CBMARQ = INS.CBMARQ
END


HTH,
"L'expérience est le nom que chacun donne à ses erreurs." (O. Wilde)
Qualité et précision de la question conditionnent celles de la réponse. :roll:
:arrow:Nouveau venu ? Une urgence ? A lire...
:arrow:SMS-addict / M(o)ufles OEM ?
Avatar de l’utilisateur
OokieDookie
Modérateur
Modérateur
 
Messages: 1012
Inscription: Jeu 14 Fév 2008 13:50
Localisation: Paris

Re: Trigger SQL - MAJ Infos libres dans F_DOCLIGNE

Messagede Mangamaster » Mar 16 FĂ©v 2010 10:31

Salut j'aimerais savoir si ton problème a été résolus car j'ai le même que toi et je suis toujours bloqué
Mangamaster
Posteur néophyte
Posteur néophyte
 
Messages: 3
Inscription: Mar 16 Fév 2010 10:30


Retourner vers Développements ODBC, Objets métiers, SQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités