PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → incomprehension sur HBloqueNumEnr
incomprehension sur HBloqueNumEnr
Débuté par Olivier PERRIN, 25 juin 2015 16:55 - 3 réponses
Membre enregistré
204 messages
Popularité : +1 (1 vote)
Posté le 25 juin 2015 - 16:55
Bonjour

J'ai un probleme avec l'utilisation de HbloqueNumer

Voila ma source

HLitRecherche(Stocks,Clef_Stocks,article ,hIdentique )

SI PAS HTrouve(Stocks) ALORS RENVOYER Faux

bErrBloq est un booléen = HBloqueNumEnr(Stocks,hNumEnrEnCours,hBlocageLectureEcriture)

SI bErrBloq = Faux ALORS
Info("Erreur sur Blocage Fichier Stocks" , HErreurInfo(hErrComplet))
RENVOYER Faux
FIN

Stocks.Qte_Stocks ++

HModifie(Stocks,hNumEnrEnCours)
HDébloqueNumEnr(Stocks,hNumEnrEnCours)

RENVOYER Vrai


De base tout marche, mais il arrive quand deux postes attaquent le même article
J'ai bien le blocage , qui ressaye toute les x secondes (pour mes tests j'ai garde la gestion via Windev)
mais j'ai très souvent une erreur 'hErrModification' sur la zone Qte_stocks.
J'en déduis quand windev ressaye de lire l'enregistrement , elle garde en memoire l'enregistrement du depart
Je ne comprends pas comment faire pour éviter ce probleme

(je sais pas si je me fais bien comprendre ;o)) )
la Caisse 1 bloque l'article
le stocks est de 5

la caisse 2 lit l'article et se trouve bloquer... (le stocks etant a ce moment a 5)

la caisse 1 change le stocks +1
et modifie le stocks et debloque l'enregistremet

la caisse 2 se trouve debloquer
modifie le stocks +2
sur hmodifie j'ai une erreur Herrmodification sur la zone Stocks qui me signale qu'il y a une difference avec la zone de depart

ouf ;)

Si quelqu'un a une idee

Cordialement
Olivier
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 29 juin 2015 - 07:28
Salut Olivier,

Le problème vient du fait que tu bloque en LECTURE et écriture.
Du coup si l'enregistrement est bloqué tu ne sais même plus le lire.
Donc il faut que tu bloque uniquement en écriture et pas en lecture.

bErrBloq est un booléen = HBloqueNumEnr(Stocks,hNumEnrEnCours,hBlocageLectureEcriture)


A+
Daryl

--
http://www.concept4u2.com
Posté le 30 juin 2015 - 20:30
Il faut faire le blocage directement dans le HLitRecherche (pour ne pas qu'il soit modifié entre la recherche et le HBloqueNumEnr).
Le HModifie libère le blocage (avec les option par défaut).

On obtient donc simplement

HLitRecherche(Stocks,Clef_Stocks,article ,hIdentique+hBlocageEcriture )
SI PAS HTrouve(Stocks) ALORS RENVOYER Faux

Stocks.Qte_Stocks ++
HModifie(Stocks,hNumEnrEnCours)

RENVOYER Vrai
Membre enregistré
204 messages
Popularité : +1 (1 vote)
Posté le 02 juillet 2015 - 08:22
Bonjour

Merci pour vos remarques , avec le HblocageEcriture dans le Hlitrecherche plus de probleme

Cordialement
Olivier