Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Modification des problèmes d'enregistrement dans Access / SQL (conflit d'écriture)

Problèmes possibles :

1 modifications simultanées

Une raison peut être que l'enregistrement en question a été ouvert dans un formulaire que vous modifiez. Si vous modifiez l'enregistrement par programme lors de votre session d'édition, puis essayez de fermer le formulaire (et essayez donc de sauvegarder l'enregistrement), l'accès indique que l'enregistrement a été modifié par quelqu'un d'autre (bien sûr, c'est vous, mais Access ne sait pas ).

Enregistrez le formulaire avant de modifier l'enregistrement par programmation.
Dans le formulaire :

'This saves the form's current record
Me.Dirty = False

'Now, make changes to the record programmatically

2 Clé primaire ou horodatage manquant

Assurez-vous que la table SQL-Server a une clé primaire ainsi qu'une colonne d'horodatage.

La colonne d'horodatage permet à Access de déterminer si l'enregistrement a été modifié depuis sa dernière sélection. Pour ce faire, Access inspecte tous les champs, si aucun horodatage n'est disponible. Peut-être que cela ne fonctionne pas bien avec les entrées nulles s'il n'y a pas de colonne d'horodatage (voir Problème de 3 bits nuls ).

L'horodatage stocke en fait un numéro de version de ligne et non une heure.

N'oubliez pas d'actualiser le lien du tableau dans access après avoir ajouté une colonne d'horodatage, sinon Access ne le verra pas. (Remarque :l'assistant de migration de Microsoft crée des colonnes d'horodatage lors de la conversion des tables Access en tables SQL-Server.)

Problème de 3 bits nuls

Selon @AlbertD.Kallal, il pourrait s'agir d'un problème de bits nuls décrit ici :KB280730 (dernier instantané sur WayBackMachine, l'article d'origine a été supprimé). Si vous utilisez des champs de bits, définissez leur valeur par défaut sur 0 et remplacez tous les NULL entrés auparavant par 0 . J'utilise habituellement un BIT DEFAULT 0 NOT NULL pour les champs booléens car cela correspond le mieux à l'idée d'un booléen.

L'article de la base de connaissances indique d'utiliser un *.adp au lieu d'un *.mdb ; cependant, Microsoft a interrompu la prise en charge d'Access Data Projects (ADP) dans Access 2013 .