无法找到Locate的行?

时间:2009-04-26 08:39:30

标签: sql-server delphi sql-server-2005 ado advantage-database-server

我正在使用D2009,dbGo(ADO)将现有的Advantage Database Server应用程序转换为SQL Server 2005。有时我会遇到错误row cannot be found for locating。我搜索了它,根据结果我需要设置每个ADOTable的Update Criteria属性并将光标位置设置为动态。我这样做了,但有时我仍然会得到同样的错误。所有表都有主键,所以我一直在使用

Query.Requery(); 
Query.Locate('ID',ID,[]); 
在更新记录之前

以避免错误,但必须有更好的解决方案。有任何想法吗?或者我应该继续使用MyDAC还是Zeoslib?

4 个答案:

答案 0 :(得分:2)

dbGO / ADO是访问MS-SQL数据库的自然方式。您确定这是确切的错误消息吗?因为我从来没有听说过,但我听说“更新”的行不能

该错误消息表明ADO无法找到要删除或更新的记录。最常见的原因是表没有定义主键,或者表中至少没有列内容全部唯一的列。

确保在MS-SQL表中定义主键。

答案 1 :(得分:1)

如果其他人在使用触发器时遇到同样的问题,请将SET NOCOUNT ON添加到开头,将SET NOCOUNT OFF设置为触发结束。

答案 2 :(得分:0)

无法更新行的常见情况是您对表有默认值约束。请务必为OnNewRecord中的字段设置值。 您可能还想使用 myAdoDataset.Properties ['Update Criteria']。值:= 0; 然后ADO应该只使用密钥进行更新。

答案 3 :(得分:0)

简单的adotable1.refresh;发帖后应该做的伎俩...