J'utilise une base Access sous Windows 2000 serveur.
Je cherche l'instuction VBA qui pourrait m'indiquer si un enregistrement est
verouillé par un autre utilisateur afin de generer un message d'erreur.
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
Bonjour
"Jean-Paul Da Boit" a écrit dans le message de news:
Bonjour,
J'utilise une base Access sous Windows 2000 serveur. Je cherche l'instuction VBA qui pourrait m'indiquer si un enregistrement est verouillé par un autre utilisateur afin de generer un message d'erreur.
Merci d'avance à tous & toutes
Jen-Paul
Ci-joint une procédure qui n'est pas de moi : il y a peut-être plus simple mais elle a le mérite de fonctionner.
Sur événement "Si modification" du formulaire, coller ceci :
Private Sub Form_Dirty(Cancel As Integer)
On Error Resume Next
With Me .AllowAdditions = True .AllowDeletions = True .AllowEdits = True End With
With Me.RecordsetClone .LockEdits = True '-- on synchronise avec le formulaire .Bookmark = Me.Bookmark '-- on tente une édition de l'enreg .Edit '-- on teste l'erreur : Enregistrement déjà bloqué If Err.Number = 3260 Or Err.Number = 3188 Then '-- on informe l'utilisateur
MsgBox "Erreur No." & Err.Number & " : " & Err.Description, _ vbExclamation, "Enregistrement en cours de modification...." End If End With End Sub
Pour tester, j'ai mis : menu outils > options onglet avancé => verrouillage par défaut = Enregistrement modifié propriétés du formulaire > onglet Données > verrouillage = Enregistrement modifié
Le message d'erreur apparaît dans le formulaire de saisie dès qu'on tente de modifier un enregistrement qui est en cours de modification (simulé depuis un accès direct à la table et modification en cours d'un enregistrement de la table)
Attention ; procédure testée sous Access 2000 => ce n'est pas 1 enregistrement qui se trouve verrouillé mais dans mon cas une "page" de 169 enregistrements type texte longueur 50, la table ne comprenant qu'un seul champ.
Le verrouillage se produit pour une taille donnée occupée par les enregistrements de la table (je ne me souviens plus combien exactement mais ce sujet a déjà été abordé ici, google te le dira) et pas un enregistrement unique (en tout cas sous Access 2000)
à+ Arnaud
Bonjour
"Jean-Paul Da Boit" <jean.paul.da.boit@wol.be> a écrit dans le message de
news: OrBizViWGHA.3440@TK2MSFTNGP02.phx.gbl...
Bonjour,
J'utilise une base Access sous Windows 2000 serveur.
Je cherche l'instuction VBA qui pourrait m'indiquer si un enregistrement
est verouillé par un autre utilisateur afin de generer un message
d'erreur.
Merci d'avance à tous & toutes
Jen-Paul
Ci-joint une procédure qui n'est pas de moi : il y a peut-être plus simple
mais elle a le mérite de fonctionner.
Sur événement "Si modification" du formulaire, coller ceci :
Private Sub Form_Dirty(Cancel As Integer)
On Error Resume Next
With Me
.AllowAdditions = True
.AllowDeletions = True
.AllowEdits = True
End With
With Me.RecordsetClone
.LockEdits = True
'-- on synchronise avec le formulaire
.Bookmark = Me.Bookmark
'-- on tente une édition de l'enreg
.Edit
'-- on teste l'erreur : Enregistrement déjà bloqué
If Err.Number = 3260 Or Err.Number = 3188 Then
'-- on informe l'utilisateur
MsgBox "Erreur No." & Err.Number & " : " & Err.Description, _
vbExclamation, "Enregistrement en cours de modification...."
End If
End With
End Sub
Pour tester, j'ai mis :
menu outils > options onglet avancé => verrouillage par défaut =
Enregistrement modifié
propriétés du formulaire > onglet Données > verrouillage = Enregistrement
modifié
Le message d'erreur apparaît dans le formulaire de saisie dès qu'on tente de
modifier un enregistrement qui est en cours de modification (simulé depuis
un accès direct à la table et modification en cours d'un enregistrement de
la table)
Attention ; procédure testée sous Access 2000 => ce n'est pas 1
enregistrement qui se trouve verrouillé mais dans mon cas une "page" de 169
enregistrements type texte longueur 50, la table ne comprenant qu'un seul
champ.
Le verrouillage se produit pour une taille donnée occupée par les
enregistrements de la table (je ne me souviens plus combien exactement mais
ce sujet a déjà été abordé ici, google te le dira) et pas un enregistrement
unique (en tout cas sous Access 2000)
"Jean-Paul Da Boit" a écrit dans le message de news:
Bonjour,
J'utilise une base Access sous Windows 2000 serveur. Je cherche l'instuction VBA qui pourrait m'indiquer si un enregistrement est verouillé par un autre utilisateur afin de generer un message d'erreur.
Merci d'avance à tous & toutes
Jen-Paul
Ci-joint une procédure qui n'est pas de moi : il y a peut-être plus simple mais elle a le mérite de fonctionner.
Sur événement "Si modification" du formulaire, coller ceci :
Private Sub Form_Dirty(Cancel As Integer)
On Error Resume Next
With Me .AllowAdditions = True .AllowDeletions = True .AllowEdits = True End With
With Me.RecordsetClone .LockEdits = True '-- on synchronise avec le formulaire .Bookmark = Me.Bookmark '-- on tente une édition de l'enreg .Edit '-- on teste l'erreur : Enregistrement déjà bloqué If Err.Number = 3260 Or Err.Number = 3188 Then '-- on informe l'utilisateur
MsgBox "Erreur No." & Err.Number & " : " & Err.Description, _ vbExclamation, "Enregistrement en cours de modification...." End If End With End Sub
Pour tester, j'ai mis : menu outils > options onglet avancé => verrouillage par défaut = Enregistrement modifié propriétés du formulaire > onglet Données > verrouillage = Enregistrement modifié
Le message d'erreur apparaît dans le formulaire de saisie dès qu'on tente de modifier un enregistrement qui est en cours de modification (simulé depuis un accès direct à la table et modification en cours d'un enregistrement de la table)
Attention ; procédure testée sous Access 2000 => ce n'est pas 1 enregistrement qui se trouve verrouillé mais dans mon cas une "page" de 169 enregistrements type texte longueur 50, la table ne comprenant qu'un seul champ.
Le verrouillage se produit pour une taille donnée occupée par les enregistrements de la table (je ne me souviens plus combien exactement mais ce sujet a déjà été abordé ici, google te le dira) et pas un enregistrement unique (en tout cas sous Access 2000)