OVH Cloud OVH Cloud

Blocage d'un fichier (WD7.5)

15 réponses
Avatar
Jean-Claude Meuterlos
Bonjour

Je voudrais ouvrir un fichier en exclusif, que les autres utilisateurs n'y
ait pas accès lors de mon traitement et avertir l'utilisateur qui exécute
mon traitement que le fichier est ouvert sur un autre poste !!!

Est-ce assez clair ?

je débute et je ne m'en sors pas pas avec HMode, HBloque, ...

Merci d'avance

10 réponses

1 2
Avatar
R&B
Jean-Claude Meuterlos wrote:
Bonjour

Je voudrais ouvrir un fichier en exclusif, que les autres utilisateurs n'y
ait pas accès lors de mon traitement et avertir l'utilisateur qui exécute
mon traitement que le fichier est ouvert sur un autre poste !!!

Est-ce assez clair ?

je débute et je ne m'en sors pas pas avec HMode, HBloque, ...

Merci d'avance




bonjour

Ne pas s'énerver et toujours tenter ces petites choses dans des projets
annexes avant de planter le projet normal.

dans l'init de votre projet :
HMode(hModeMulti)
active la gestion automatique des blocages.
(cela fait partie des question à l'initialisation de votre projet.)
Vous allez donc hériter des magnifiques fenêtre de gestion ds erreurs HF
proposées par windev et lancées automatiquement par le moteur HF.

il ne vous reste plus qu'à programmer votre blocage :

si HBloqueFichier(FICHIER, hBlocageEcriture) alors
...traitement
HDébloqueFichier(FICHIER)
fin

Les autre se prendront un zoli message lorsqu'il teneront d'écrire dans
FICHIER.

Merci de noter que le blocage complet d'un fichier est particulièrement
sensible... si vous perdez la main (plantage de votre session) avant le
déblocage, il faudra redémarer le serveur pour revenir à la normale.

@+ R&B
Avatar
Stéphane
R&B wrote in
news:bjnb9n$g67$:

Jean-Claude Meuterlos wrote:
Bonjour

Je voudrais ouvrir un fichier en exclusif, que les autres
utilisateurs n'y ait pas accès lors de mon traitement et avertir



si HBloqueFichier(FICHIER, hBlocageEcriture) alors


Et même encore plus bloquant

si HBloqueFichier(FICHIER, hBlocageLectureEcriture) alors
Avatar
Fabrice Burghgraeve
bonjour.

"R&B" a écrit dans le message de
news:bjnb9n$g67$
(...)

Merci de noter que le blocage complet d'un fichier est particulièrement
sensible...
si vous perdez la main (plantage de votre session) avant le
déblocage, il faudra redémarer le serveur pour revenir à la normale.



Un avantage de plus d'une vraie base de donnees par rapport a hyperfile...
avec une vraie base de donnee, si on lock une table dans une transaction, et
que le programme client plante, la transaction est annulee et la table
debloquee...
(heureusement... misere si il fallait redemarrer le serveur de base a chaque
beubeugue d'un des clients...)


--
Fabrice Burghgraeve
Computer & Services

(enlevez le _pas_de_spam_ pour me répondre en privé)
Avatar
Jean-Claude Meuterlos
> > Bonjour
>
>1) Je voudrais ouvrir un fichier en exclusif, que les autres


utilisateurs n'y
> ait pas accès lors de mon traitement



> 2) avertir l'utilisateur qui exécute
> mon traitement que le fichier est ouvert sur un autre poste !!!
>

si HBloqueFichier(FICHIER, hBlocageEcriture) alors
...traitement
HDébloqueFichier(FICHIER)
fin



OK et merci pour le HbloqueFichier(FICHIER, hBlocageEcriture) : ça répond à
la premiere partie de ma question.

Mon Traitement crée ou modifie des Enregistrements dans le Fichier INDIVIDU
à partir d'un fichier texte

Lorsque j'ouvre ma fenetre pour exécuter ce traitement, est-il possible de
savoir et de signaler que le fichier INDIVIDU est utilisé sur un autre poste
ou par un autre traitement ? (si un utilisateur est en train de consulter,
modifier, editer, ... les données de INDIVIDU par exemple)
Avatar
Stéphane
"Jean-Claude Meuterlos" wrote in
news:bjnfb7$7ih$:


Lorsque j'ouvre ma fenetre pour exécuter ce traitement, est-il
possible de savoir et de signaler que le fichier INDIVIDU est utilisé
sur un autre poste ou par un autre traitement ? (si un utilisateur est
en train de consulter, modifier, editer, ... les données de INDIVIDU
par exemple)


si HBloqueFichier(FICHIER, hBlocageEcriture) alors
...traitement
HDébloqueFichier(FICHIER)
sinon
Info("Impossible de bloquer le fichier car il est utilisé sur un
autre poste.")
fin
Avatar
Eric Regnier \(bureau\)
R&B a écrit:

Merci de noter que le blocage complet d'un fichier est
particulièrement sensible... si vous perdez la main (plantage de
votre session) avant le déblocage, il faudra redémarer le serveur
pour revenir à la normale.



Quoi?
Certainement pas!

--
Eric.
Avatar
Jean-Claude Meuterlos
"Stéphane" <[bouclier] a écrit dans le message de
news:
"Jean-Claude Meuterlos" wrote in
news:bjnfb7$7ih$:


> Lorsque j'ouvre ma fenetre pour exécuter ce traitement, est-il
> possible de savoir et de signaler que le fichier INDIVIDU est utilisé
> sur un autre poste ou par un autre traitement ? (si un utilisateur est
> en train de consulter, modifier, editer, ... les données de INDIVIDU
> par exemple)



si HBloqueFichier(FICHIER, hBlocageEcriture) alors
...traitement
HDébloqueFichier(FICHIER)
sinon
Info("Impossible de bloquer le fichier car il est utilisé sur un
autre poste.")
fin



C'est ce que je pensais, mais ça ne marche pas.

Je suis sur un poste A, je suis en modification d'un individu, prêt à
valider.
je lance mon traitement sur un poste B (avec HBloqueFichier), lorsque le
poste A valide, effectivement, il a un message comme quoi le fichier est
verrouillé, mais sur le poste B, aucun message "Impossible de bloquer le
fichier car il est utilisé sur un autre poste." n'apparait !!!
ça, ça ne me va pas tellement mais si y'a pas d'autres solutions tant pis.

(NB : Lorsque mon traitement se termine sur le poste B (avec
HDebloquefichier), le poste A peut valider : ça, ça me va.)

et merci
Avatar
Stéphane
"Jean-Claude Meuterlos" wrote in
news:bjngbo$tmu$:

C'est ce que je pensais, mais ça ne marche pas.

Je suis sur un poste A, je suis en modification d'un individu, prêt à
valider.
je lance mon traitement sur un poste B (avec HBloqueFichier), lorsque
le poste A valide, effectivement, il a un message comme quoi le
fichier est verrouillé, mais sur le poste B, aucun message "Impossible
de bloquer le fichier car il est utilisé sur un autre poste."
n'apparait !!!


Parce que le poste A ne bloque pas le fichier
Avatar
Fabrice Burghgraeve
bonjour.

"Eric Regnier (bureau)" a écrit dans le message de
news:bjnff1$jon$
R&B a écrit:

> Merci de noter que le blocage complet d'un fichier est
> particulièrement sensible... si vous perdez la main (plantage de
> votre session) avant le déblocage, il faudra redémarer le serveur
> pour revenir à la normale.

Quoi?
Certainement pas!

--
Eric.



Je me disais aussi que c'etait quand meme bien gros....


--
Fabrice Burghgraeve
Computer & Services

(enlevez le _pas_de_spam_ pour me répondre en privé)
Avatar
R&B
Fabrice Burghgraeve wrote:

bonjour.

"R&B" a écrit dans le message de
news:bjnb9n$g67$
(...)

Merci de noter que le blocage complet d'un fichier est particulièrement
sensible...
si vous perdez la main (plantage de votre session) avant le
déblocage, il faudra redémarer le serveur pour revenir à la normale.




Un avantage de plus d'une vraie base de donnees par rapport a hyperfile...
avec une vraie base de donnee, si on lock une table dans une transaction, et
que le programme client plante, la transaction est annulee et la table
debloquee...
(heureusement... misere si il fallait redemarrer le serveur de base a chaque
beubeugue d'un des clients...)





Sacré fabrice !
Si la constance est une vertue, tu mérites le paradis ! 8-D

Je n'ai pas voulu parler des transactions HF pour deux raisons :
- je ne parle pas de ce que je n'ai pas pratiqué (j'évite ainsi des
ânneries ou inutilités), du moins sans le mentionner par un 'pas testé'.
- je crois a voir compris qu'elle ne satisfont pas le besoin exprimé.

Sinon, je pense que le HFC/S constiuera un grand pas pour nos petits
problèmes...

on y retourne ?

@+ R&B
1 2