trigger pour rendre la saisie obligatoire sur info libre

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 pour rendre la saisie obligatoire sur info libre

Messagede hinazi » Ven 24 Juil 2009 17:31

Bonjour
J'ai la gescom 100 pack+ sql server version15.53.
je veux rendre la saisie d'une info libre obligatoire au niveau des documents de ventes.
j'ai crée ma info libre (Etage) type TABLE car elle doit accepte que les valeurs (1,0,-1)
j'ai crée mon trigger au niveau de ma bdd, il s'execute sur sql sans probleme.
sur sage gescom, je n'arrive pas à rajouter ou saisir une ligne avec cette info libre.sachant que ce meme trigger fonctione sans problème sur la version14. est ce que vous avez eu ce probleme auparavant? sinon,est ce qlq1 peux me lire mon trigger et me corriger s'il ya une erreure.
trigger ci joint:
Code: Tout sélectionner
Create TRIGGER TG_Etage ON F_DOCLIGNE FOR UPDATE AS
Declare @DO_Type int,@Etage as nvarchar(30)
select @DO_Type=DO_Type,@Etage=Etage from INSERTED
if @DO_Type=6 and (@Etage='' or @Etage is null)
begin
Raiserror('Etage obligatoire',11,1) WITH SETERROR
Rollback Transaction
Return
END

merci pour ce forum
hinazi
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 15 Juil 2009 16:15

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede ricil78 » Lun 3 AoĂ» 2009 11:12

sauf erreur ou non connaissance de ma part
tu es en FOR UPDATE donc ton trigger se fera seulement lors de mise à jour du document et non à la création
ricil78
Super Contributeur
Super Contributeur
 
Messages: 104
Inscription: Lun 20 Nov 2006 14:16

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede hinazi » Lun 3 AoĂ» 2009 11:36

bonjour
alors comment je peux le faire à la création.peux tu me donner la synatxe?merci
hinazi
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 15 Juil 2009 16:15

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede ricil78 » Lun 3 AoĂ» 2009 11:47

Create TRIGGER TG_Etage ON F_DOCLIGNE FOR INSERT, UPDATE AS
.....

en théorie maintenant tu es gère l'insertion et la mise à jour avec le même trigger.
l'update et l'insert sont sur la meme table INSERTED donc pas besoin de changer ton code !
ricil78
Super Contributeur
Super Contributeur
 
Messages: 104
Inscription: Lun 20 Nov 2006 14:16

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede OokieDookie » Lun 3 AoĂ» 2009 16:18

Bonjour,

Pour info cette syntaxe est la bonne mais concernant Sage... :roll:
Les infos libres sont toujours gérées en UPDATE (dixit la maintenance) :oops:

A+
"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 pour rendre la saisie obligatoire sur info libre

Messagede ricil78 » Lun 3 AoĂ» 2009 16:22

je connais cette règle mais il me semblait que c'était valable que pour les lignes de document !

tu en es certain ?
si non tu as essayé ?
si oui autant pour moi !
ricil78
Super Contributeur
Super Contributeur
 
Messages: 104
Inscription: Lun 20 Nov 2006 14:16

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede hinazi » Lun 3 AoĂ» 2009 17:22

bjr
j'ai testé mais ça ne marche pas : avec INSERT OU UPDATE.
QLQ 1 peux me dire la solution
hinazi
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 15 Juil 2009 16:15

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede ricil78 » Lun 3 AoĂ» 2009 17:36

si tu as essayé de lèver ta condition et de mettre ta valeur étage dans ton raiserror.
comme ça tu vois déjà si ton trigger se déclenche et si il se déclenche tu verra la valeur contenu de ta variable.
une fois que tout marche tu as juste Ă  changer ton message

pour ton teste
RAISERROR('%i', 16,1, @Etage)
ricil78
Super Contributeur
Super Contributeur
 
Messages: 104
Inscription: Lun 20 Nov 2006 14:16

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede silvia » Mer 5 AoĂ» 2009 09:38

Salut, j'ai eu un peu le même problème que toi et pour passer outre, j'ai été obliger de mettre le trigger sur les lignes de document, ainsi :

Code: Tout sélectionner
CREATE TRIGGER TG_ZoneOblig ON [dbo].[F_DOCLIGNE]
FOR INSERT, UPDATE
AS

DECLARE @piece varchar(10), @domm int, @Souche int, @Type int, @Createur varchar(69)

-- On récupère le numéro de la pièce
SELECT @piece = DO_Piece, @domm = Do_Domaine, @Type = DO_Type FROM INSERTED

-- On prend que les Ventes qui ne sont pas de la caisse
IF @domm = 0 AND @Type <> 30 BEGIN

   -- On va rechercher l'entĂŞte (crĂ©ateur, prisecde) avec le numĂ©ro de pièce
   SELECT @Createur = CREATEUR, @Souche = DO_Souche FROM F_DOCENTETE WHERE DO_Domaine=0 AND DO_Piece = @piece
   
   -- On oblige la saisi pour le standard (pas les caisse)
   IF @Souche = 0 BEGIN
      -- Si le CrĂ©ateur n'est pas saisi... ERREUR!!!!
      IF (@Createur is null or @Createur = '') BEGIN
         Raiserror('Veuillez saisir le crĂ©ateur de la pièce.',11,1)
         Rollback Transaction
         Return
      END
   END
END


Ce n'est pas la meilleur solution, mais c'est le seul truc qui marche que j'ai trouvé, on peut saisir des entêtes, mais au moment de la saisie des lignes, il faut obligatoirement que l'info libre de l'entête soit renseigné. Un document sans ligne n'a aucun intérêt... Donc...

Si tu trouve mieux, je suis intéressé...
silvia
Posteur habitué
Posteur habitué
 
Messages: 34
Inscription: Jeu 26 Juin 2008 17:16
Localisation: RODEZ

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede hinazi » Mer 5 AoĂ» 2009 12:34

Bonjour
juste une confirmation ta zone libre est "createur", n'es pas? ça veut direlà tu as crée ta zone libre au niveau de l'entete si il est rempli , tu as la main de saisir sur l'info libre surles lignes.
j'ai pas bien compris ta solution désolé si je me suis égaré car ce problème me préoccupe et je n'arrive pas à le resoudre.merci
hinazi
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 15 Juil 2009 16:15

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede ricil78 » Mer 5 AoĂ» 2009 12:43

Pour info sage n'aime pas que l'on fasse des raiserror sur l'insertion et update de ligne.
car d'après eu certain calcule fait la gescom et d'autre trigger ont déjà été effectué et le rollback n'aurait pas d'action sur eux ! donc à terme la base pourrait connaitre des anomalies.

Toujours selon eux : il n'y a pas moyen de contraindre l'utilisateur à une action, mais seulement de le prévenir avec un message d'avertissement.
ricil78
Super Contributeur
Super Contributeur
 
Messages: 104
Inscription: Lun 20 Nov 2006 14:16

Re: trigger pour rendre la saisie obligatoire sur info libre

Messagede silvia » Mer 5 AoĂ» 2009 14:38

Oui, c'est ca.

Mon infolibre est sur l'entete de document.
Mon triggers lui par contre est sur les lignes de document.

A la création/Modification d'une ligne, je vérifie que l'information libre de l'entete est renseigné, si ce n'est pas le cas, impossible d'insérer des lignes.


Je me doute que SAGE ne recommande pas ce genre de transaction. On touche Ă  leur base alors il y a toujours un risque.
Mon triggers est actif chez des clients depuis quelques années(quelques version aussi), mais je n'ai pas eu de souci pour le moment...
silvia
Posteur habitué
Posteur habitué
 
Messages: 34
Inscription: Jeu 26 Juin 2008 17:16
Localisation: RODEZ


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

Qui est en ligne

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