aSy*_*oad 30 sql sql-server ms-access sql-server-2008
我使用的SQL DB迁移到新服务器后出现问题.现在,当尝试在Access(表单或表格)中编辑记录时,它说:WRITE CONFLICT: This record has been changed by another user since you started editing it...
有没有明显的原因.没有人使用服务器,我已禁用表上的任何触发器.我刚刚发现它与NULL有关,因为没有的记录没有,但是有些NULL的行不是.可能与索引有关吗?如果它是相关的,我最近开始每天上传BULK,而不是一次使用来自Access的INSERT INTO.
Oli*_*bes 44
原因可能是有问题的记录已在您正在编辑的表单中打开.如果在编辑会话期间以编程方式更改记录,然后尝试关闭表单(从而尝试保存记录),则访问权限表明该记录已被其他人更改.
在以编程方式更改记录之前保存表单.
形式如下:
'This saves the form's current record
Me.Dirty = False
'Now, make changes to the record programmatically
Run Code Online (Sandbox Code Playgroud)
更新1
确保SQL-Server表具有主键和时间戳列.
时间戳列有助于Access确定自上次选择记录以来是否已对其进行了编辑.如果没有可用的时间戳,Access会通过检查所有字段来执行此操作.如果没有时间戳列,可能这对空条目不起作用(参见我的更新2).
时间戳实际上存储行版本号而不是时间.
添加时间戳列后,请不要忘记刷新访问中的表链接,否则Access将无法看到它.(注意:Microsoft的升迁向导在将Access表转换为SQL-Server表时创建时间戳列.)
更新2
根据@ AlbertD.Kallal,这可能是这里描述的空位问题:KB280730.如果您正在使用位字段,请将其默认值设置为0并替换之前输入的任何NULL 0.我通常使用一个BIT DEFAULT 0 NOT NULL布尔字段,因为它最接近布尔的想法.
知识库文章说使用*.adp而不是*.mdb; 但是,Microsoft在Access 2013中停止了对Access Data Projects(ADP)的支持.
小智 12
有这个问题,和原始海报一样.即使在没有表格的情况下直接编辑.问题出在位字段上,如果您的字段为Null,则在您访问记录时将Null转换为0,然后您进行更改,这次是第二次更改.所以2改变了冲突.我遵循奥利维尔的建议:
"确保该表具有主键和时间戳列."
它解决了这个问题.
| 归档时间: |
|
| 查看次数: |
46974 次 |
| 最近记录: |