Conflit d'écriture (encore !)

Le
sonia.gaubert
Bonjour,
Dans un formulaire, j'ai - associé à l'évènement après mise à j=
our
d'un champ - programmé une série de vérifications et mises à jour d=
e
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 utilisateurbla, 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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #19586601
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


Publicité
Poster une réponse
Anonyme