Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conflit d'écriture (encore !)

1 réponse
Avatar
sonia.gaubert
Bonjour,
Dans un formulaire, j'ai - associ=E9 =E0 l'=E9v=E8nement apr=E8s mise =E0 j=
our
d'un champ - programm=E9 une s=E9rie de v=E9rifications et mises =E0 jour d=
e
champs dans d'autres enregistrements (en rapport avec l'enregistrement
en cours...). Cela fonctionne bien, sauf - et c'est tr=E8s aga=E7ant - que
j'ai la fameuse bo=EEte de message syst=E8me (conflit d'=E9criture :
enregistrements modifi=E9s par un autre utilisateur...bla, bla) qui
s'affiche =E0 chaque fois... Comment faire en sorte qu'elle ne s'affiche
plus ??

Par avance, merci de vos lumi=E8res,
Sonia.
Je recopie ci-dessous une partie du code de mise =E0 jour en question :

If AncNomRepProj <> NouvNomRepProj Then
strSQL =3D "SELECT Documents.* FROM Documents WHERE
Documents.AutreRefProjet =3D """ & AncNomRepProj & """"
strSQL =3D strSQL & "AND (Documents.RefFonds) =3D" & Me!
[RefFonds]
Set rst =3D CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then 's'il en existe
'on demande si tous les noms de rep =E9quivalents doivent
=EAtre modifi=E9s,
nbr =3D DCount("*", "Documents", "[RefFonds] =3D forms!
[FmrExpositionsDocumentsListe]![RefFonds] AND [AutreRefProjet] =3D """ &
AncNomRepProj & """")
If nbr > 1 Then
msg =3D "Il existe plusieurs enregistrements li=E9s au
r=E9pertoire " & Me![AutreRefProjet] & "!" & Chr(13) & "Que voulez-vous
faire ? :" & Chr(13) & "- modifier tous les noms =E9quivalents ? :
valider Oui ; " & Chr(13) & "- modifier seulement l'enregistrement en
cours ? : valider Non. "
Style =3D vbYesNoCancel
Title =3D "QUELLES MODIFICATIONS ?"
Response =3D MsgBox(msg, Style, Title)
If Response =3D vbYes Then
'si oui :
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet =3D NouvNomRepProj
rst!RefObjDoc =3D MAJRefObjet
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst =3D Nothing

1 réponse

Avatar
3stone
Salut,

VBA peut en effet être considéré comme "une autre" utilisateur...

Si dans ton formulaire en mode édition, tu manipule le contenu
de ton formulaire (ou ce qui est lié) Access peut se plaindre
de ce double accès.

Eventuellement séparer les données qu tu manipule de celle
en édition.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



wrote:
Bonjour,
Dans un formulaire, j'ai - associé à l'évènement après mise à jour
d'un champ - programmé une série de vérifications et mises à jour de
champs dans d'autres enregistrements (en rapport avec l'enregistrement
en cours...). Cela fonctionne bien, sauf - et c'est très agaçant - que
j'ai la fameuse boîte de message système (conflit d'écriture :
enregistrements modifiés par un autre utilisateur...bla, bla) qui
s'affiche à chaque fois... Comment faire en sorte qu'elle ne s'affiche
plus ??

Par avance, merci de vos lumières,
Sonia.
Je recopie ci-dessous une partie du code de mise à jour en question :

If AncNomRepProj <> NouvNomRepProj Then
strSQL = "SELECT Documents.* FROM Documents WHERE
Documents.AutreRefProjet = """ & AncNomRepProj & """"
strSQL = strSQL & "AND (Documents.RefFonds) =" & Me!
[RefFonds]
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then 's'il en existe
'on demande si tous les noms de rep équivalents doivent
être modifiés,
nbr = DCount("*", "Documents", "[RefFonds] = forms!
[FmrExpositionsDocumentsListe]![RefFonds] AND [AutreRefProjet] = """ &
AncNomRepProj & """")
If nbr > 1 Then
msg = "Il existe plusieurs enregistrements liés au
répertoire " & Me![AutreRefProjet] & "!" & Chr(13) & "Que voulez-vous
faire ? :" & Chr(13) & "- modifier tous les noms équivalents ? :
valider Oui ; " & Chr(13) & "- modifier seulement l'enregistrement en
cours ? : valider Non. "
Style = vbYesNoCancel
Title = "QUELLES MODIFICATIONS ?"
Response = MsgBox(msg, Style, Title)
If Response = vbYes Then
'si oui :
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet = NouvNomRepProj
rst!RefObjDoc = MAJRefObjet
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing