PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → pb de blocage
pb de blocage
Débuté par j.bossut, 08 déc. 2004 10:53 - 4 réponses
Posté le 08 décembre 2004 - 10:53
J'ai un problème avec le blocage d'enregistrements

voici mon code :
HLitRecherche(Controleur,IDControleur,Main.Table_Controleur.IDControleur,hIdentique+hBlocageEcriture)

SI HTrouve(Controleur) ALORS


SI HErreurBlocage() ALORS
BLOK..Etat=Visible
ModeOuverture="Visu"
ExécuteTraitement(F_Controleurs,trtInit)
FIN

FichierVersEcran()

Le problème est que lorsque l'enregistrement est bloqué en ecriture, je ne peux même pas y accéder en lecture donc je ne passe jamais dans la fonction H trouve
Posté le 08 décembre 2004 - 11:30
Votre traitement inverse l'ordre du test. L'accès à l'enregistrement doit être testé avant de savoir s'il a été trouvé ou non. Ainsi le test de <HErreurBlocage> doit être avant celui de <HTrouve>.

Voici un exemple qui je l'espère pourra vous orienter :

HLitRecherche(Controleur,IDControleur,Main.Table_Controleur.IDControleur,hIdentique+hBlocageEcriture)

SI pas HErreurBlocage() ALORS

// Ok on a lu est bloqué
SI HTrouve(Controleur) ALORS
// Ok l'enregistrement est lu, trouvé et est bloqué...
SINON
Info("L'enregistrement n'a pas été trouvé.")
FIN
SINON

// Blocage de l'accès au fichier ou a l'enregistrement
// On va tenter de le lire sans blocage
HLitRecherche(Controleur,IDControleur,Main.Table_Controleur.IDControleur,hIdentique)
SI pas HErreurBlocage() ALORS

SI HTrouve(Controleur) ALORS
// Ok on a lu l'enregistrement mais il est bloqué par un autre poste
// consultation seule ...



Respectueuses salutations.
Jean MOREL (jeanmorel@ifrance.com)
Posté le 08 décembre 2004 - 15:57
Je ne vois pas de différence avec mon code
le problème est que lors de l'execution de la fonction:
HLitRecherche(Controleur,IDControleur,Main.Table_Controleur.IDControleur,hBlocageEcriture)

Si l'enregistrement est déja bloqué

Hlit recherche me lit un enregistrement dont l'ID est à 0 et donc il n'y a pas d'erreur de blocage

je précise que j'ai bien mis dans le code du projet:

HMode(hModeMulti)
HSurErreur("*",hErrBlocage,"")
Posté le 08 décembre 2004 - 17:54
Si la fonction htrouve n'est pas réalisée, alors essayez de tester AVANT TOUT la fonction de blocage pour vérifier si HTrouve ne fonctionne que si HErreurBlocage retourne Faux :

HlitRecherche(Controleur,IDControleur,Main.table_Controleur.IDControluer,HBlocageEcriture)
si HerreurBlocage() ALORS
// Enregistrement déjà bloqué.
BLOK..Etat=Visible
//...
SINON
SI HTrouve(Controleur) ALORS
//
FIN
FIN

TF.
Posté le 08 décembre 2004 - 18:09
Essayez la fonction de blocage AVANT la fonction HTrouve pour vérifier laquelle prévaut sur l'autre :

HLitRecherche(...,hBlocageEcriture)
Si HErreurBlocage Alors
BLOK..etat=visible
// Etc...
SINON
Si HTrouve(Controleur) ALORS
// ACTION.
Fin
FIN

TF.