Sql server 找不到定位的行?
我正在使用D2009、dbGo(ADO)将现有Advantage数据库服务器应用程序转换为SQLServer2005。有时我遇到错误,无法找到用于定位的Sql server 找不到定位的行?,sql-server,delphi,sql-server-2005,ado,advantage-database-server,Sql Server,Delphi,Sql Server 2005,Ado,Advantage Database Server,我正在使用D2009、dbGo(ADO)将现有Advantage数据库服务器应用程序转换为SQLServer2005。有时我遇到错误,无法找到用于定位的行。我在谷歌上搜索过,根据搜索结果,我需要设置每个ADOTable的更新条件属性,并将光标位置设置为动态。我这样做了,但有时我还是会犯同样的错误。所有的表都有主键,所以我一直在使用 Query.Requery(); Query.Locate('ID',ID,[]); 在更新记录之前避免错误,但必须有更好的解决方案。有什么想法吗?或者我应该继
行。我在谷歌上搜索过,根据搜索结果,我需要设置每个ADOTable的更新条件属性,并将光标位置设置为动态。我这样做了,但有时我还是会犯同样的错误。所有的表都有主键,所以我一直在使用
Query.Requery();
Query.Locate('ID',ID,[]);
在更新记录之前避免错误,但必须有更好的解决方案。有什么想法吗?或者我应该继续使用MyDAC还是Zeoslib?dbGO/ADO是访问MS-SQL数据库的自然方式。您确定这就是确切的错误消息吗?因为我从来没有听说过它,但我听说过“不能为更新定位行”
该错误消息表示ADO找不到要删除或更新的记录。最常见的原因是表中没有定义主键,或者表中至少没有内容唯一的列
确保在MS-SQL表中定义主键 无法更新行的常见情况是表上有默认值约束。确保为OnNewRecord中的字段设置值。
您可能还想使用
myAdoDataset.Properties['Update Criteria']。值:=0;
然后ADO应该只使用该键进行更新。如果其他人在使用触发器时有相同的问题,请在触发器的开头添加SET-NOCOUNT ON,在触发器的结尾添加SET-NOCOUNT OFF。simple adotable1.refresh;之后的帖子应该做的技巧 请使用评论。如果您每次都使用同一个帐户登录此网站,您可以为自己的问题添加评论。是的,我试图发表评论,但它需要50个声誉-我没有。然后用澄清或其他问题编辑您的附加帖子。:-)你可以随时编辑自己的帖子。谢谢,我也有同样的问题