|
Problème de bloquage. |
|
DSI WDF
Inscrit: 15/03/2005 14:22
Post(s): 238
|
si j'utilise la fonction HBloqueNumEnr, je bloque bien mon enregistrement. si je réutilise HBloqueNumEnr sur un autre fichier sans avoir débloqué mon enregistrement du 1er fichier, ce dernier est automatiquement débloqué.
Comment peut on avoir 2 enregistrements bloqué sur 2 fichiers?
Contribution le : 11/06/2005 15:48
|
|
|
Re: Problème de bloquage. |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour,
Ce phenomène me parrait anormale car il doit exister un pointeur et un contexte par fichier. Par conséquent deux pointeurs dans deux contextes différents l'un ne doit pas empiéter sur l'autre.
Cela mettrait en danger la construction d'application MDI.
Ou bien votre code est mit en cause, ou alors il existe un réelle problème qui je pense aurait été soulevé depuis fort longtemps.
Tests à réaliser....
Quel type de fichier utilisez vous ?
Contribution le : 13/06/2005 10:26
|
|
|
Re: Problème de bloquage. |
|
DSI WDF
Inscrit: 15/03/2005 14:22
Post(s): 238
|
C'est du HF. J'ai trouvé une solution palliative, qui fonctionne (aprés quelques tests). J'envoi le code ce soir pour ceux qui le désirent.
Contribution le : 13/06/2005 10:44
|
|
|
Re: Problème de bloquage. |
|
DSI WDF
Inscrit: 15/03/2005 14:22
Post(s): 238
|
Voila: //Daclarations globales strBloque est une structure sNomFic est une chaîne nNbBloque est un entier nNumEnr est un entier FIN gTstrBloque est un tableau de 0 strBloque
----------------------------------------------
PROCEDURE GLOBALE bBloqueEnr(LOCAL psNomFic est une chaîne) nInd est un entier bBloque est un booléen bRetour est un booléen nNumEnr est un entier
nNumEnr = HNumEnr(psNomFic)
nInd = TableauCherche(::gTstrBloque,tcLinéaire, "sNomFic;nNumEnr", psNomFic, nNumEnr)
SI nInd <> -1 ALORS SI ::gTstrBloque[nInd]:nNbBloque = 0 ALORS bBloque = Vrai SINON bBloque = Faux FIN ::gTstrBloque[nInd]:nNbBloque++ SINON nInd = TableauAjoute(::gTstrBloque) ::gTstrBloque[nInd]:nNbBloque = 1 ::gTstrBloque[nInd]:sNomFic = psNomFic ::gTstrBloque[nInd]:nNumEnr = nNumEnr bBloque = Vrai FIN
SI bBloque ALORS SI ::gTstrBloque[nInd]:nNbBloque = 1 ALORS HBloqueNumEnr(psNomFic,::gTstrBloque[nInd]:nNumEnr,hBlocageEcriture) SI PAS HErreurBlocage() ALORS bRetour = Vrai SINON HErreur() Info("Enregistrement bloqué par un autre poste.") ::gTstrBloque[nInd]:nNbBloque-- bRetour = Faux FIN FIN SINON bRetour = Vrai FIN
POUR nInd = 1 A Dimension(::gTstrBloque) SI ::gTstrBloque[nInd]:nNbBloque > 0 ALORS SI PAS HBloqueNumEnr(::gTstrBloque[nInd]:sNomFic,::gTstrBloque[nInd]:nNumEnr,hBlocageEcriture) ALORS SI EnModeTest() ALORS Info("erreur bloquage : " + RC + HErreurInfo(hErrComplet)) FIN FIN SINON TableauSupprime(::gTstrBloque,nInd) FIN FIN
RENVOYER bRetour
-------------------------------------------------
PROCEDURE GLOBALE bDebloqueEnr(LOCAL psNomFic est une chaîne)
nInd est un entier nNumEnr est un entier
nNumEnr = HNumEnr(psNomFic)
nInd = TableauCherche(::gTstrBloque,tcLinéaire, "sNomFic;nNumEnr", psNomFic, nNumEnr)
SI nInd <> -1 ALORS SI ::gTstrBloque[nInd]:nNbBloque > 0 ALORS ::gTstrBloque[nInd]:nNbBloque-- SI ::gTstrBloque[nInd]:nNbBloque = 0 ALORS HDébloqueNumEnr(psNomFic,::gTstrBloque[nInd]:nNumEnr) FIN SINON ::gTstrBloque[nInd]:nNbBloque = 0 FIN FIN
RENVOYER Vrai
Contribution le : 13/06/2005 21:29
|
|
|
Re: Problème de bloquage. |
|
Stagiaire WDF
Inscrit: 26/05/2005 12:21
Post(s): 21
|
@ben-34 et drcharly93 Bonsoir, Je pense que la variable "psNomFic" membre de la structure (TABLEAU) "gTstrBloque" se comporte comme une instance d'une classe. Parce que si c'est le cas je cite : Citation : Une variable de type tableau ou un objet (instance d'une classe) ne peut pas devenir locale à une procédure. J'espère que c'est une idée dans le bon chemin. Bonne Chance
Contribution le : 13/06/2005 23:54
|
_________________
//**//
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.