尝试发布或编辑时,其他用户更改了记录

bej*_*run 4 sql-server delphi odbc bde sql-server-native-client

正在使用Delphi 7Sql Server express 2008 R2开发应用程序,使用BDE通过ODBC连接Sql Server,并使用SQL Native Client作为驱动程序.

在某些特定形式的表组件加薪EDBEngineError"记录已被其他用户更改",我只是尝试添加数据,发生同样的问题时table.cancel,table.post,table.edit.....

几天前我将驱动程序从SQL Server更改为Sql Native Client因为sql server有"连接有另一个hstmt的结果集"的问题,所以我把它改为SQL Native客户端,形成这个我遇到了'记录已经由antoher用户'错误更改.

请任何一个帮助

da-*_*oft 5

  1. BDE不会长时间更新.SQL Native Client定期更新.可能会遇到BDE和SQLNC v 10.5的不兼容问题.
  2. "记录已由另一个用户更改"表示该API返回<> 1更新的记录,例如0记录.在大多数情况下,某些用户改变了记录并不是真的.更新记录的数量作为单独的消息返回,因此如果连接忙于其他消息,则它可能返回0.如果您的表具有触发器,则尝试在触发器SET NOCOUNT ON顶部添加.
  3. "连接正忙于另一个hstmt的结果集"意味着您尚未从活动结果集中获取所有记录.您可以尝试获取所有记录.
  4. 要避免所有这些错误,请考虑迁移到像AnyDAC这样的dbExpress或3d方库.

除了(2): "记录已被另一个用户改变"的其他经典原因.该WHERE短语包括字段和相应的参数,它们不精确匹配(例如,精度在客户端丢失),具有不同的格式(例如,不兼容的字符集)等.您必须检查SQL命令和参数值使用SQL事件探查器发送到SQL Server.