加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在Access / SQL(写入冲突)中编辑记录问题

发布时间:2020-12-12 16:13:59 所属栏目:MsSql教程 来源:网络整理
导读:在我使用的SQL DB被迁移到新的服务器之后出现了一个问题.现在,当尝试在Access(表单或表格)中编辑记录时,它说:WRITE CONFLICT:此记录自您开始编辑之后已被其他用户更改… 这是否有任何不明显的原因.没有人使用服务器,我已经禁用了表上的任何触发器.我刚刚发
在我使用的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读