Page 1 sur 1

Description xp_CBIsFileLock

MessagePosté: Jeu 16 Juil 2015 16:43
de Benoit.dev
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

Re: Description xp_CBIsFileLock

MessagePosté: Jeu 16 Juil 2015 17:17
de IMPERIAL
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

Re: Description xp_CBIsFileLock

MessagePosté: Jeu 16 Juil 2015 17:31
de Benoit.dev
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.

Re: Description xp_CBIsFileLock

MessagePosté: Jeu 16 Juil 2015 21:05
de asr31
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.

Re: Description xp_CBIsFileLock

MessagePosté: Ven 17 Juil 2015 09:28
de Benoit.dev
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

Re: Description xp_CBIsFileLock

MessagePosté: Ven 17 Juil 2015 13:33
de crevecoeurj
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

Re: Description xp_CBIsFileLock

MessagePosté: Ven 17 Juil 2015 17:51
de asr31
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,

Re: Description xp_CBIsFileLock

MessagePosté: Lun 20 Juil 2015 09:09
de Benoit.dev
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.