我的问题.
我编写了一个存储过程来计算通过Ms Access前端(到MSSQL2000数据库)的表单呈现的多个字段.
一旦我调用Me.Form.Requery来获取更改的值.我可以发出令人恼火的消息,即我造成了写冲突.
自您开始编辑以来,其他用户已更改此记录.如果保存记录,则将覆盖其他用户所做的更改.将更改复制到剪贴板将允许您查看其他用户输入的值,然后在您决定进行更改时将更改粘贴回来.
我知道我改变了数据,因此我希望抑制消息或阻止消息发生.
(我想我应该在一篇文章中发表评论,因为我实际上是在回答这个问题)
您收到写冲突消息的原因是您通过表单和存储过程编辑记录来创建写冲突.要避免该错误,只需在执行存储过程之前将记录保存在表单中.从上面发布的代码段中,它应该是:
Me.Dirty = False cmd.Execute , , adCmdStoredProc
这是一个常见的Access错误,它是由尝试通过绑定表单和直接SQL更新编辑数据引起的.在通过SQL更新相同记录之前,需要保存表单的编辑缓冲区.
换句话说,您应该感谢错误消息正在发生,否则,您将丢失其中一个或另一个更改.
不过我对设计提出质疑.如果您以绑定的形式打开记录,则对表单中加载的数据进行编辑,而不是运行SQL来更新它.我不确定为什么你需要一个存储过程来更改你已经在表单中编辑过的记录 - 这听起来像是一个设计错误(即使解决方案非常简单).