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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <tarsoft@hotmail.com> wrote in message
news:001901c381e4$d140fe50$a301280a@phx.gbl...
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.
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.
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
"richardp" <richardp@online.microsoft.com> 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 ?
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
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.
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" <tarsoft@hotmail.com> wrote in message
news:001901c381e4$d140fe50$a301280a@phx.gbl...
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.
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.
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: ******************
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:brouardf@club-internet.fr ******************
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: ******************