Các vấn đề có thể xảy ra:
1 Chỉnh sửa đồng thời
Một lý do có thể là bản ghi được đề cập đã được mở trong một biểu mẫu mà bạn đang chỉnh sửa. Nếu bạn thay đổi bản ghi theo chương trình trong phiên chỉnh sửa của mình và sau đó cố gắng đóng biểu mẫu (và do đó cố gắng lưu bản ghi), Access nói rằng bản ghi đã bị người khác thay đổi (tất nhiên đó là bạn, nhưng Access không biết ).
Lưu biểu mẫu trước khi thay đổi bản ghi theo chương trình.
Trong biểu mẫu:
'This saves the form's current record
Me.Dirty = False
'Now, make changes to the record programmatically
2 Thiếu khóa chính hoặc dấu thời gian
Đảm bảo bảng SQL-Server có khóa chính cũng như cột dấu thời gian.
Cột dấu thời gian giúp Access xác định xem bản ghi đã được chỉnh sửa kể từ lần cuối cùng được chọn hay chưa. Access thực hiện điều này bằng cách kiểm tra tất cả các trường, nếu không có sẵn dấu thời gian. Có thể điều này không hoạt động tốt với các mục nhập rỗng nếu không có cột dấu thời gian (xem 3 Vấn đề bit rỗng ).
Dấu thời gian thực sự lưu trữ số phiên bản hàng chứ không phải thời gian.
Đừng quên làm mới liên kết bảng trong quyền truy cập sau khi thêm cột dấu thời gian, nếu không Access sẽ không nhìn thấy nó. (Lưu ý:Trình hướng dẫn Tăng kích thước của Microsoft tạo các cột dấu thời gian khi chuyển đổi bảng Access sang bảng SQL-Server.)
Vấn đề 3 bit rỗng
Theo @ AlbertD.Kallal, đây có thể là vấn đề bit rỗng được mô tả ở đây: KB280730
(ảnh chụp lần cuối trên WayBackMachine, bài viết gốc đã bị xóa). Nếu bạn đang sử dụng các trường bit, hãy đặt giá trị mặc định của chúng thành 0
và thay thế mọi NULL đã nhập trước đó bằng 0
. Tôi thường sử dụng BIT DEFAULT 0 NOT NULL
cho các trường Boolean vì nó phù hợp nhất với ý tưởng về Boolean.
Bài viết KB nói rằng hãy sử dụng * .adp thay vì * .mdb; tuy nhiên, Microsoft đã ngừng hỗ trợ cho Access Data Projects (ADP) trong Access 2013 .