Dans une application que j'écris, je reçois des conflits d'écriture lorsque j'utilise le code VBA pour modifier la valeur d'une case à cocher sur un formulaire. J'ai essayé d'insérer le code suivant dans les événements qui ont VBA changer les valeurs de tout objet sur le formulaire:Écrire des conflits - même avec me.dirty
If Me.Dirty Then
Me.Dirty = False
End If
Mais le problème persiste - comme si l'enregistrement est en cours d'enregistrement avant que je cherche à changer quoi que ce soit à travers manipulation manuelle.
Voici quelques exemples du code complet de la forme où je rencontre ce problème:
code lorsque Blank case de prix est modifié:
Private Sub chkSupAllowBlankPrice_AfterUpdate()
If Me.Dirty Then
Me.Dirty = False
End If
If (chkSupAllowBlankPrice.Value = True) Then
chkSupRequirePrice.Value = False
End If
End Sub
code lorsque besoin du prix case à cocher est modifiée:
Private Sub chkSupRequirePrice_AfterUpdate()
If Me.Dirty Then
Me.Dirty = False
End If
If (chkSupRequirePrice.Value = True) Then
chkSupAllowBlankPrice.Value = False
chkSupAllowBlankPrice.Visible = False
chkSupAllowBlankPrice.Enabled = False
chkSupAllowBlankPrice.Locked = True
lblSupAllowBlankPrice.Visible = False
Else
chkSupAllowBlankPrice.Visible = True
chkSupAllowBlankPrice.Enabled = True
chkSupAllowBlankPrice.Locked = False
lblSupAllowBlankPrice.Visible = True
End If
End Sub
Je ne sais pas si ça aide, bu t les tables sont stockées dans une base de données SQL Server Express - d'où le tag.
- Edité 05/29/2009 @ 1201 heures -
J'ai essayé de commenter toutes les valeurs de l'objet change, ne laissant que dans visible, verrouillé, et a permis des changements - mais je continue à recevoir des conflits d'écriture. J'ai essayé de mettre le Me.Dirty = False à la fin de la procédure d'événement, et j'ai même essayé de l'enlever. Jusqu'à présent, je reçois des conflits d'écriture chaque fois que je change Require Pricing ou Allow Blank Pricing, sans que l'autre valeur soit modifiée par le code VBA.
- Edité 05/29/2009 @ 1318 heures -
Les champs que ces cases manipulent -Est sans but accepter tout changement une fois que l'enregistrement est créé, générant un conflit écriture chaque fois que je tente de travailler avec eux. Maintenant, je suis totalement confus, pensant à tout vider et recommencer.
- Edité 06/01/2009 @ 1209 heures -
Après enquête, il semble qu'il y ait un certain nombre de contraintes de vérification définies sur le serveur pour les tables impliquées que je ne peux pas supprimer. Quelque chose fait que les tables liées ont toujours un rapport sale même si les éléments n'ont pas été changés - et je pense qu'Access et SQL se battent avec les valeurs par défaut. Je vais effacer toutes les tables, supprimer toutes les informations et recommencer avec ma conception, car les contraintes de vérification ne semblent pas pouvoir être supprimées sans laisser tomber la table. Merci à tous pour votre aide, cette question pourrait-elle être close - en renvoyant le problème à cette nouvelle question (Updates to Records not allowed - Write Conflict)?
- Edité 06/03/2009 @ 1307 heures -
Permuté autre question, solution décrite ci-dessous pour tous ceux qui étaient curieux. Merci à toutes les personnes qui m'ont cogné la tête pour aller aussi loin, j'apprécie vraiment l'aide. J'ai découvert qu'un problème étrange qui surgit lors de l'utilisation des cases à cocher Oui/Non et SQL Server avec Access. Apparemment, Access interprétera NULL comme No - changeant la valeur, mais SQL Server n'interprétera pas NULL comme un champ No dans un Bit (ce que Yes/No sera converti) donc il lance une erreur Write Conflict lorsqu'une valeur n'est pas requis, et est NULL. La solution consistait à reconcevoir la table afin qu'une valeur soit requise et qu'une valeur par défaut était assignée pour CHAQUE ancienne case Oui/Non. Cela a résolu les mystérieux messages de conflit d'écriture, et a permis des modifications aux enregistrements une fois qu'ils ont été créés.
Que voulez-vous dire par écrit conflit? Sans ce code, cela fonctionne-t-il comme prévu? – shahkalpesh
Sans ce code, chaque fois que la valeur est modifiée pour Tarification vide, ou Requérir un prix - Une boîte de dialogue Conflit d'écriture apparaît juste après l'édition (entraînant la modification de l'autre champ par le code VBA) forçant l'écriture des modifications dans le Presse-papiers ou pour que les modifications soient supprimées. –