在我使用的sql DB被迁移到新的服务器之后出现了一个问题.现在,当尝试在Access(表单或表格)中编辑记录时,它说:WRITE CONFLICT:此记录自您开始编辑之后已被其他用户更改…
这是否有任何不明显的原因.没有人使用服务器,我已经禁用了表上的任何触发器.我刚刚发现这是与NULL的事情有关的记录,没有一个是可以的,但是一些没有NULL的行.可以用索引来做吗?如果相关,我最近开始每天上传BULK,而不是一次使用Access中的INSERT INTO.
解决方法
原因可能在于您正在编辑的表单中打开了有问题的记录.如果您在编辑会话期间以编程方式更改记录,然后尝试关闭表单(从而尝试保存记录),则访问说该记录已被其他人更改.
在以编程方式更改记录之前保存表单.
形式如下:
'This saves the form's current record Me.Dirty = False 'Now,make changes to the record programmatically
更新1
确保sql-Server表具有主键以及时间戳列.
时间戳列有助于确定自上次选择之后记录是否已被编辑.访问通过检查所有字段(如果没有时间戳可用)执行此操作.如果没有时间戳列,可能这对null条目不起作用(请参阅我的UPDATE 2).
时间戳实际上存储行版本号而不是时间.
添加时间戳列之后,不要忘记在访问中刷新表链接,否则Access不会看到它. (注意:Microsoft的升级向导在将Access表转换为sql Server服务器表时创建时间戳列.)
更新2
根据@ AlbertD.Kallal,这可能是这里描述的一个零位问题:KB280730.如果使用位字段,将其默认值设置为0,并将之前输入的任何NULL替换为0.我通常使用BIT DEFAULT 0 NOT NULL布尔字段最符合布尔值的想法.
知识库文章说使用* .adp而不是* .mdb;然而,Microsoft discontinued the support for Access Data Projects (ADP) in Access 2013.