0

我有一个(非常简单和标准的)UPDATE 语句,它可以直接在 Query Analyser 中正常工作,也可以作为 Query Analyser 中的存储过程执行。

UPDATE A
SET 
      A.field1 = B.col1
    , A.field2 = B.col2
FROM
       tblA AS A INNER JOIN tblB AS B 
ON A.pk1 = B.pk1 AND A.pk2 = B.pk2

问题是当我通过 microsoft ADP 执行相同的存储过程时(通过双击存储过程名称或使用运行选项),它说“查询成功运行但没有返回记录”并且在我检查时不更新记录直接表。

在任何人甚至说“MS-Access 的语法与 SQLServer T-SQL 不同”之前,请记住,使用 ADP,一切都发生在服务器上,并且实际上是通过 T-SQL 传递的。

任何 ADP 大师有什么好主意吗?

4

5 回答 5

1

明白了。为了其他人的利益,回答我自己的问题。

工具/选项/高级/客户端-服务器设置/默认最大记录设置为 10,000(大概这是默认设置)。将此更改为 0 表示无限制。

我的表有 100,000 多行,而且它正在更新的任何 10,000 行都很难找到(在 90,000 多行未更新的行中)。因此,更新没有按预期完全工作。

于 2009-08-19T04:44:50.133 回答
0

尝试使用 SQL 探查器查看查询是否在 SQL Server 上执行。
另外,我认为您可能需要关闭链接表并重新打开它以查看更新的记录。

那样有用吗?

于 2009-08-19T02:25:01.867 回答
0

在运行 SQL PROfiler 的情况下运行查询。在开始跟踪之前添加所有错误事件。这将为您提供 SQL Server 生成的任何错误,即 Access ADP 可能无法正确显示(或根本无法显示)。

随意张贴在这里。

于 2009-08-19T03:24:10.930 回答
0

作为参考,这是我在更新查询上写的一篇论文,讨论了与失败时相关的一些问题。

http://www.fmsinc.com/microsoftaccess/query/snytax/update-query.html

于 2009-10-09T18:58:12.077 回答
-1

我似乎记得我总是收到“没有返回任何行”消息并且不得不简单地关闭消息传递。这是因为它没有返回任何行!

至于另一个 - 有时会有一个主键问题。正在更新的表在 SQLServer 中是否有主键?如果是这样,请检查 Access 中的表视图 - 有时该链接无法通过。已经有一段时间了,所以我可能是错的,但我认为您可能需要在访问时查看表的设计视图并在那里添加主键。

编辑:额外的想法:在您的调试中,尝试输入打印语句以查看输入的值是什么。当您从访问中执行时,它实际上是否像您期望的那样从表中获取数据?

于 2009-08-19T02:35:18.247 回答