OVH Cloud OVH Cloud

SOS Client/Server

4 réponses
Avatar
Argador
Bonjour/Bonsoir tout le monde;
voil=E0, je suis en plein programmation d'une napplication=20
Client/server en VB6 et ma base de donn=E9es est en SQL=20
Server 2000. je programme une aplication Gestion=20
Commeriale. je veux savoir comment pourrais-je verouiller=20
une facture si un autre utilisateur a deja ouvert celle-
ci, c'est a dire, si une facture X est ouverte par un=20
utilisateur A, et apr=E9s un autre utilisateur B veux=20
ouvrir la facture X, comment puis-je envoyer un message a=20
l'utilisateur B l'informant que la facture X est ouverte=20
par l'utilisateur A .
Aidez-moi SVP, et merci d'avoir lu mon message.

4 réponses

Avatar
richardp
Salut,
Tu peux ajouter un champs dans lequel tu indiques que quelqu'un est en train
de lire la facture (son login) et elle est inacccessible.
Quand tu accèdes a une facture en premier tu accédes à ce champs qui stocke
le login de l'utilisateur qui est en train de lire ou vide si personne.

Richard

"Argador" wrote in message
news:001901c381e4$d140fe50$
Bonjour/Bonsoir tout le monde;
voilà, je suis en plein programmation d'une napplication
Client/server en VB6 et ma base de données est en SQL
Server 2000. je programme une aplication Gestion
Commeriale. je veux savoir comment pourrais-je verouiller
une facture si un autre utilisateur a deja ouvert celle-
ci, c'est a dire, si une facture X est ouverte par un
utilisateur A, et aprés un autre utilisateur B veux
ouvrir la facture X, comment puis-je envoyer un message a
l'utilisateur B l'informant que la facture X est ouverte
par l'utilisateur A .
Aidez-moi SVP, et merci d'avoir lu mon message.
Avatar
David Brabant
"richardp" wrote

Tu peux ajouter un champs dans lequel tu indiques
que quelqu'un est en train de lire la facture (son login)
et elle est inacccessible.



Gérer explicitement le locking avec ce genre de
technique lorsqu'on travaille avec un SGBD flirte
avec le criminel.

Déjà, la situation en elle-même, telle que décrite
est révélatrice d'un problème. Pourquoi vouloir
bloquer la totalité d'une facture lorsque celle-ci
est en cours d'édition ?

--
David
Avatar
Lionel Pénuchot
Bonjour,

Une première solution est d'initier une transaction côté client, lors du
SELECT sur entête et lignes de facture utiliser l'hint UPDLOCK, à la
fermeture faire commit ou rollback.
une autre solution consiste a utiliser les application locks:
avant l'ouverture de la facture faire un sp_getapplock 'facture XXXX',
exclusive, en fonction du retour continuer sur le SELECT de l'entête et
lignes de factures ou afficher un message facture ouverte, à la fin faire un
sp_releaseapplock.


Cordialement,
LionelP


"Argador" wrote in message
news:001901c381e4$d140fe50$
Bonjour/Bonsoir tout le monde;
voilà, je suis en plein programmation d'une napplication
Client/server en VB6 et ma base de données est en SQL
Server 2000. je programme une aplication Gestion
Commeriale. je veux savoir comment pourrais-je verouiller
une facture si un autre utilisateur a deja ouvert celle-
ci, c'est a dire, si une facture X est ouverte par un
utilisateur A, et aprés un autre utilisateur B veux
ouvrir la facture X, comment puis-je envoyer un message a
l'utilisateur B l'informant que la facture X est ouverte
par l'utilisateur A .
Aidez-moi SVP, et merci d'avoir lu mon message.
Avatar
Fred BROUARD
effectivement c'est impossible sauf à passer un vérificateur cyclique
qui nettoye les colonnes si la connexion n'est plus.

Mais ton analyse est mauvaise :
Il suffirait de faire une transaction avec le niveau d'isolation
sérializable

A +

ARGADOR a écrit:
merci pour cet idée, mais si j'utilise un lock , je dois
le liberer juste aprés que l'utilisateur libere la
facture , c'est a dire le mettre a false, mais si il y'a
avait une coupure de courant d'electricité , comment je
fais pour garantir le changement de la valeur de mon lock
a false ???




--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************