Mulige problemer:
1 samtidige redigeringer
En årsag kan være, at den pågældende post er blevet åbnet i en form, som du redigerer. Hvis du ændrer posten programmatisk under din redigeringssession og derefter forsøger at lukke formularen (og dermed forsøger at gemme posten), siger access, at posten er blevet ændret af en anden (selvfølgelig er det dig, men Access ved det ikke ).
Gem formularen, før du ændrer posten programmatisk.
I formularen:
'This saves the form's current record
Me.Dirty = False
'Now, make changes to the record programmatically
2 Manglende primærnøgle eller tidsstempel
Sørg for, at SQL-Server-tabellen har en primær nøgle samt en tidsstempelkolonne.
Tidsstempelkolonnen hjælper Access med at bestemme, om posten er blevet redigeret, siden den sidst blev valgt. Access gør dette ved at inspicere alle felter, hvis intet tidsstempel er tilgængeligt. Måske fungerer dette ikke godt med null-indtastninger, hvis der ikke er nogen tidsstempelkolonne (se 3 Null-bits problem ).
Tidsstemplet gemmer faktisk et rækkeversionsnummer og ikke et tidspunkt.
Glem ikke at opdatere tabellinket i Access efter tilføjelse af en tidsstempelkolonne, ellers vil Access ikke se det. (Bemærk:Microsofts Upsizing Wizard opretter tidsstempelkolonner, når Access-tabeller konverteres til SQL-Server-tabeller.)
3 null bit problem
Ifølge @AlbertD.Kallal kunne dette være et problem med null bits beskrevet her:KB280730
(sidste snapshot på WayBackMachine, den originale artikel blev slettet). Hvis du bruger bitfelter, skal du indstille deres standardværdi til 0
og erstatte eventuelle NULL'er indtastet før med 0
. Jeg bruger normalt en BIT DEFAULT 0 NOT NULL
for booleske felter, da det bedst matcher ideen om en boolsk.
KB-artiklen siger, at man skal bruge en *.adp i stedet for en *.mdb; dog Microsoft indstillede supporten til Access Data Projects (ADP) i Access 2013 .