Description xp_CBIsFileLock

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

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

Description xp_CBIsFileLock

de Benoit.dev » Jeu 16 Juil 2015 16:43

Bonjour à tous,

Je suis développeur et j'ai une question un peu technique.

Dans les triggers SAGE, il y a souvent des références à IsFileLock.

Après "fouinage" dans la base, ça viendrait d'une procédure stockée étendue nommée xp_CBIsFileLock qui elle même serait incluse dans la DLL cbsqlxp.

Voilà la question :

Quelqu'un connait la description des paramètres, ce que fait cette fonction exactement ?

L'objectif est de comprendre certains messages d'erreurs, par exemple
"IF dbo.CB_FntIsFileLock('F_ARTFOURNISS',2) = 1
Raiserror(80002,11,1);"

En gros, ça renvoie le message 'Suppression impossible !', mais pourquoi ?

et le descriptif de la fonction ainsi que l'utilité des paramètres aideraient à comprendre pourquoi on ne peut pas supprimer l'article. (par exemple)

Voilà voilà,

Merci d'avance.

Bonne fin de journée.

Cordialement,

Benoit



PS peu utile : J'ai une version SAGE 100 SQL Server i7 Pack + v8.01
Dernière édition par Benoit.dev le Lun 20 Juil 2015 09:10, édité 2 fois.
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Jeu 16 Juil 2015 16:33

Re: Description xp_CBIsFileLock

de IMPERIAL » Jeu 16 Juil 2015 17:17

Bonjour,

Ca vérifie que ton enregistrement n'est pas locké. Si ton enregistrement est verrouillé alors, elle te renvoie une erreur.

Par exemple : si qq1 écrit dans un journal, alors le journal est locké. A l'ouverture du journal ou si tu veux écrire dans ce journal, IsFileLock vérifie que le journal n'est pas locké et te renvoie l'erreur.

Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.

IMPERIAL
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 4661
Inscription: Jeu 6 Aoû 2009 12:39
Localisation: ROSNY SOUS BOIS

Re: Description xp_CBIsFileLock

de Benoit.dev » Jeu 16 Juil 2015 17:31

Merci pour ta réponse.

Malheureusement, ça, je le sais.
(Erreur 80002 suppression impossible, erreur 80003 élément en cours d’utilisation etc)

Ce que j'aimerais savoir c'est ce qu'elle fait pour dire "suppression impossible".

Au mieux, le code de la fonction, au pire, ce qu'elle va vérifier en "français" (pas en code)


Parce qu'en fait, il manque une infos, mon raisonnement :

1°) Test de suppression, retour trigger "Suppression impossible" : 'Ok super, c'est à dire? '
2°) Je cherche d'où vient cette erreur, fonction "CB_FntIsFileLock" : "Ok donc doit y avoir un verrou quelque part"

Mais, ça s'arrête là parce que je ne connais pas ce que fait la fonction "IsFileLock", je ne sais pas Pourquoi, mon enregistrement est verrouillé.

L'autre message "Élément en cours d'utilisation" est clair lui, = fiche article ouverte dans SAGE. Mais celui là, il est vague quand même, aucune infos sur le pourquoi c'est impossible.

Et selon moi, le seul moyen est de pouvoir décortiquer la fonction pour voir ce qu'elle fait.

Merci encore.
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Jeu 16 Juil 2015 16:33

Re: Description xp_CBIsFileLock

de asr31 » Jeu 16 Juil 2015 21:05

CB_IsFileLock
Paramètres en Entrée
• CbFile (sysname) : Nom du fichier (ex ‘F_COMPTEG’)
• CbType (smallint) : Type de verrou (0,1,2,3)
◊ 0 : Shared (partagé)
◊ 1 : Exclusif
◊ 2 : Delete (suppression)
◊ 3 : Modification
Paramètres en Sortie
• Retourne un message d'erreur si le fichier est verrouillé
CB_IsFileLock @cbFile sysname, @cbType smallint, @lRes int OUTPUT
Cette procédure vérifie si un fichier est verrouillé. Elle est appelée uniquement par les
déclencheurs de table.

Quand on dit fichier, c'est plutôt une table.

Il est rare qu'une table soit lockée, il faut plutôt regarder du coté de IsRecordLock :
CB_IsRecordLock
Paramètres en Entrée
• CbFile (sysname) : Nom du fichier (ex ‘F_COMPTEG’)
• CbMarq (int) : Marqueur de l’enregistrement
Paramètres en Sortie
• Retourne un message d'erreur si le fichier est verrouillé
CB_IsFileLock @cbFile sysname, @cbType smallint, @lRes int OUTPUT
Cette procédure vérifie si un enregistrement est verrouillé. Elle est appelée uniquement
par les déclencheurs de table.
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: Description xp_CBIsFileLock

de Benoit.dev » Ven 17 Juil 2015 09:28

Bonjour,

Merci pour ta réponse :) , c'est assez complet.

Il reste une inconnue, qui je pense, va être difficile à trouver parce qu'il faudrait savoir ce que vérifient ces fonctions.

Pourquoi ça coince quand je veux supprimer ?


Je vais détailler un peu la situation :

Je n'arrive pas à supprimer un article de SAGE Gescom, le bouton supprimer est grisé.

Donc, je pensais que c'était parce que l'article était mouvementé, pourtant non, aucune ligne.

Je me dis, bon tant pis, je vais supprimer en base de données. Et c'est là que je me prend un râteau par un trigger.


LA solution de facilité, je désactive le trigger, j'efface la ligne, je remet le trigger.

Mais cette solution n'aide pas à comprendre ce qui empêche la suppression.
(sachant que la fiche de cet article n'est pas ouverte dans SAGE)

Si quelqu'un sait ce que va vérifier la procédure stockée étendue 'CB_IsFileLock' pour pouvoir me répondre 'Suppression impossible', ce serait la solution.

Merci d'avance.

Bonne journée à tous.

Benoit
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Jeu 16 Juil 2015 16:33

Re: Description xp_CBIsFileLock

de crevecoeurj » Ven 17 Juil 2015 13:33

bonjour,

as-tu essaye de faire un recalculer des stocks sur l article avant suppression ?
parfois les compteurs sont erronés (f_artstock) et ça empêche de supprimer.

cordialement
Chef de projet - Acs informatique

Si vous ne réussissez pas du premier coup, appelez ça « version 1.0″.
Avatar de l’utilisateur
Contributeur
Contributeur
 
Messages: 69
Inscription: Lun 16 Juil 2007 10:43

Re: Description xp_CBIsFileLock

de asr31 » Ven 17 Juil 2015 17:51

Bonjour,

Dans le SQL Management Studio, tu peux utiliser l'outil SQL Profiler pour tracer ce qui se passe (côté SQL en tout cas).
Vérifie tout de même qu'il n'y a pas un utilisateur fantôme,qui aurait laissé un lock quelque part... (rechercher utilisateur fantôme dans le forum ou utiliser l'outil de maintenance sur la compta puis la gescom pour vérifier qu'il n'y a plus d'utilisateur connecté (ça, il le dit à l'ouverture de la base) et que la base est OK en lançant une petite vérification).

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: Description xp_CBIsFileLock

de Benoit.dev » Lun 20 Juil 2015 09:09

Bonjour,

Merci pour vos réponses.

Je n'ai pas l'info que j'ai besoin, mais je pense qu'a part les dévs de SAGE, personne ne l'a.

J'ai pu supprimer mon article, il semble qu'il y avait un lien avec la table des articles fournisseurs, en supprimant ça, c'était réglé.

Bonne journée.

Cordialement,

Benoit.
Posteur néophyte
Posteur néophyte
 
Messages: 4
Inscription: Jeu 16 Juil 2015 16:33


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