Kemungkinan masalah:
1 Pengeditan serentak
Alasannya mungkin karena rekaman yang dimaksud telah dibuka dalam bentuk yang sedang Anda edit. Jika Anda mengubah rekaman secara terprogram selama sesi pengeditan lalu mencoba menutup formulir (dan dengan demikian mencoba menyimpan rekaman), access mengatakan bahwa rekaman telah diubah oleh orang lain (tentu saja itu Anda, tetapi Access tidak tahu ).
Simpan formulir sebelum mengubah catatan secara terprogram.
Dalam bentuk:
'This saves the form's current record
Me.Dirty = False
'Now, make changes to the record programmatically
2 Kunci utama atau stempel waktu tidak ada
Pastikan tabel SQL-Server memiliki kunci utama serta kolom stempel waktu.
Kolom stempel waktu membantu Access menentukan apakah rekaman telah diedit sejak terakhir dipilih. Access melakukan ini dengan memeriksa semua bidang, jika tidak ada stempel waktu yang tersedia. Mungkin ini tidak berfungsi dengan baik dengan entri nol jika tidak ada kolom stempel waktu (lihat Masalah 3 bit nol ).
Stempel waktu sebenarnya menyimpan nomor versi baris dan bukan waktu.
Jangan lupa untuk menyegarkan tautan tabel di akses setelah menambahkan kolom stempel waktu, jika tidak, Access tidak akan melihatnya. (Catatan:Wizard Upsizing Microsoft membuat kolom stempel waktu saat mengonversi tabel Access ke tabel SQL-Server.)
Masalah 3 bit nol
Menurut @AlbertD.Kallal ini bisa menjadi masalah bit nol yang dijelaskan di sini:KB280730
(snapshot terakhir di WayBackMachine, artikel asli telah dihapus). Jika Anda menggunakan bidang bit, setel nilai defaultnya ke 0
dan ganti NULL yang dimasukkan sebelumnya dengan 0
. Saya biasanya menggunakan BIT DEFAULT 0 NOT NULL
untuk bidang Boolean karena paling cocok dengan gagasan Boolean.
Artikel KB mengatakan untuk menggunakan *.adp alih-alih *.mdb; namun, Microsoft menghentikan dukungan untuk Access Data Projects (ADP) di Access 2013 .