我有一个(非常简单和标准的)UPDATE语句,它可以直接在查询分析器中正常工作,也可以作为查询分析器中的存储过程执行。
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执行相同的存储过程(通过双击sproc名称或使用Run选项)时,它表示“查询已成功运行但未返回记录”并且不会更新记录时我直接检查表。
在有人说“MS-Access的语法与SQLServer T-SQL不同”之前,请记住,使用ADP,一切都在服务器上发生,一个实际上是通过T-SQL传递。
来自任何ADP大师的任何好主意?
答案 0 :(得分:1)
疑难杂症。为了别人的利益回应我自己的问题。
工具/选项/高级/客户端 - 服务器设置/默认最大记录设置为10,000(可能这是默认值)。将其更改为0表示无限制。
我的桌子有10万多行,而且更新的10,000套很难找到(在90,000多个未更新的行中)。因此,更新没有按预期完全发挥作用。
答案 1 :(得分:0)
尝试使用SQL分析器查看是否在SQL Server上执行查询 此外,我认为您可能需要关闭链接表&重新打开它以查看更新的记录。
这有用吗?
答案 2 :(得分:0)
运行SQL PRofiler运行查询。在开始跟踪之前添加所有错误事件。这将为您提供SQL Server正在生成的Access ADP可能无法正确显示(或根本不显示)的任何错误。
随意在这里张贴。
答案 3 :(得分:0)
作为参考,这是我在Update Queries上写的一篇论文,讨论了与失败时相关的一些问题。
http://www.fmsinc.com/microsoftaccess/query/snytax/update-query.html
答案 4 :(得分:-1)
我似乎记得我总是得到“没有返回任何行”的消息,不得不简单地关掉消息。这是因为它没有返回任何行!
至于另一个 - 有时会出现主要问题。正在更新的表是否在SQLServer中具有主键?如果是这样,请检查Access中表格的视图 - 有时该链接未通过。这已经有一段时间了,所以我可能错了,但我认为你可能需要在访问时查看表的设计视图并在那里添加主键。
编辑:补充思想: 在调试中,尝试抛出print语句以查看输入值是什么。当您从访问执行时,它是否实际上从表中获取数据?