Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 找不到定位的行?_Sql Server_Delphi_Sql Server 2005_Ado_Advantage Database Server - Fatal编程技术网

Sql server 找不到定位的行?

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,[]); 在更新记录之前避免错误,但必须有更好的解决方案。有什么想法吗?或者我应该继

我正在使用D2009、dbGo(ADO)将现有Advantage数据库服务器应用程序转换为SQLServer2005。有时我遇到错误,无法找到用于定位的
行。我在谷歌上搜索过,根据搜索结果,我需要设置每个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个声誉-我没有。然后用澄清或其他问题编辑您的附加帖子。:-)你可以随时编辑自己的帖子。谢谢,我也有同样的问题