1

我创建了一个访问查询,其中包含大约 700 条记录的 3 字段输出,我想将其用作 SQL Server 的直通查询的输入。

我已经在 SQL Server 中完全测试了这个过程,它工作正常,但是当我尝试在 passtrhu 中运行相同的代码时,我得到一个错误

将 returnrecords 属性设置为 yes 的传递查询未返回任何记录。

这是查询的前几行:

if object_id('tempdb..#marktmp1') is not null drop table #marktmp1
create table #marktmp1
(Cid bigint,
Ccd varchar(6),
Ciss int);
/*
Insert into #marktmp1
values
(5110029175,    'SPO',  17),
(5110029722,    'SPO',  17),
(5110035139,    'SPO',  17);

我只是将第一个查询的输出复制/粘贴到上面的列表中

在记录列表的末尾,我尝试将#marktmp1表连接到现有表。

我们在 Sql Server 2012 上。

4

2 回答 2

2

在没有看到其余代码的情况下,我猜您永远不会以任何其他方式进行选择或返回结果集(例如调用存储过程)。如果是这种情况,请检查此答案中的重要说明:

如何在 sql-server-via-ms-access 中创建临时表

请注意,请在我之后检查 Gord Thompson 的答案,并确保您不会遇到麻烦。

于 2013-06-17T21:55:28.763 回答
1

简单的解决方案:添加SET NOCOUNT ON为传递中的第一个命令。

发生的情况是,当您向#temp表中插入记录时,SQL 服务器响应### Record(s) affected. Access 看到此消息并将其解释为查询完成,但未找到返回的行。这就是为什么你得到

将 returnrecords 属性设置为 yes 的传递查询未返回任何记录

SET NOCOUNT ON关闭这些信息消息,然后访问将等待最终SELECT发生。

于 2013-11-20T16:01:56.177 回答