Re: Problème de bloquage.
Posté par ben-34 le 13/6/2005 21:29:23
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
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=2377&post_id=10019