Bonjour,
Je poste une bouteille à la mer pour avoir un coup de pouce sur le problème que je rencontre.
Je suis en train de développer pour le bureau une petite application. Contexte technique :
- écrans développés en VBA Access 2010 avec utilisation d'ADO pour accéder à la base
- base de données MySql Serveur 5.7
- utilisateur du connecteur ODBC 3.51 MySql.
Je butte sur un problème de gestion de verrou.
Sur un écran, j'ai un formulaire qui permet de modifier un enregistrement d'une table. Dans ma requête SQL je pose un verrou pour être certain que personne d'autre ne puisse modifier l'enregistrement en question en même temps. Voici la requête :
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Set rstDep = New ADODB.Recordset rstDep.CursorLocation = adUseClient Conn.BeginTrans rstDep.Open ("SELECT * FROM D_DEPLACEMENT WHERE DEP_ID = '" & Form_F_DEPLACEMENT.Lst_Historique.Column(1, Form_F_DEPLACEMENT.Lst_Historique.ItemsSelected) & "' FOR UPDATE"), Conn
Voici le code de connexion à la base de données :
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set Conn = New ADODB.Connection Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" & ";SERVER=" & bdd_server & ";DATABASE= " & bdd_database & ";UID= " & bdd_user & ";PWD= " & bdd_password & ";OPTION=3"
Ainsi, depuis le PC 1 je me positionne sur l'enregistrement à modifier, le verrou est posé. Là ça va.
Sur le PC 2, je me positionne sur le même enregistrement et je tente une modification. Là, l'écran de l'application gèle car il tente de poser un verrou, mais comme il est déjà posé par le PC 1 il ne peut pas.
Pour débloquer l'écran du PC 2, je dois annuler ou valider, donc faire sauter le verrou posé par le PC 1.
Ma question : comment, je peux détecter que mon enregistrement est locké par un verrou quand je tente de le modifier depuis un autre écran ? J'ai vu sur le net la notion de Lock Delay dans les propriétés ODBC, le verrouillage pessismiste d'ADO ne me bloque par mon enregistrement et je peux enregistrer en même temps mon enregistrement depuis 2 PC différents.
J'avoue que je suis un peu perdu, et de l'aide serait la bienvenue.
Merci
Jay
Partager