Mogelijke problemen:
1 Gelijktijdige bewerkingen
Een reden kan zijn dat het betreffende record is geopend in een vorm die u aan het bewerken bent. Als u het record tijdens uw bewerkingssessie programmatisch wijzigt en vervolgens het formulier probeert te sluiten (en dus het record probeert op te slaan), zegt access dat het record door iemand anders is gewijzigd (u bent het natuurlijk, maar Access weet het niet ).
Sla het formulier op voordat u het record programmatisch wijzigt.
In het formulier:
'This saves the form's current record
Me.Dirty = False
'Now, make changes to the record programmatically
2 Ontbrekende primaire sleutel of tijdstempel
Zorg ervoor dat de SQL-Server-tabel zowel een primaire sleutel als een tijdstempelkolom heeft.
De tijdstempelkolom helpt Access om te bepalen of de record is bewerkt sinds deze voor het laatst is geselecteerd. Access doet dit door alle velden te inspecteren, als er geen tijdstempel beschikbaar is. Misschien werkt dit niet goed met null-items als er geen tijdstempelkolom is (zie probleem met 3 null-bits ).
De tijdstempel slaat eigenlijk een rijversienummer op en geen tijd.
Vergeet niet de tabellink in access te vernieuwen na het toevoegen van een tijdstempelkolom, anders ziet Access deze niet. (Opmerking:de Upsizing Wizard van Microsoft maakt tijdstempelkolommen bij het converteren van Access-tabellen naar SQL-Server-tabellen.)
Probleem met 3 null-bits
Volgens @AlbertD.Kallal zou dit een nullbits-probleem kunnen zijn dat hier wordt beschreven:KB280730
(laatste momentopname op WayBackMachine, het originele artikel is verwijderd). Als u bitvelden gebruikt, stelt u hun standaardwaarde in op 0
en vervang alle eerder ingevoerde NULL's door 0
. Ik gebruik meestal een BIT DEFAULT 0 NOT NULL
voor Booleaanse velden omdat dit het meest overeenkomt met het idee van een Boolean.
Het KB-artikel zegt dat je een *.adp moet gebruiken in plaats van een *.mdb; echter, Microsoft stopte de ondersteuning voor Access Data Projects (ADP) in Access 2013 .