如何在Microsoft Access VBA中使用SQL Server临时表#tllTmpYaks?

时间:2013-10-09 14:02:16

标签: sql sql-server vba ms-access-2007 temp-tables

我需要创建一个本地临时表#tblTmpYaks,然后选择此临时表中的记录以显示在PassThrough查询中。

临时表创建如下:

CREATE TABLE #tblTmpYaks (ID INT NOT NULL IDENTITY,
   YakName CHAR(30),
   PRIMARY KEY (ID));
INSERT INTO #tblTmpYaks (YakName) VALUES('My Yak');
INSERT INTO #tblTmpYaks (YakName) VALUES('My Female Yak');

然后使用SQL字符串创建一个passthru查询:

SELECT * FROM #tblTmpYaks;

但这不起作用,因为当我打开它时显示MsgBox:

enter image description here

这意味着#tblTmpYaks在SQL Server中不再存在。

如何使这项工作?

结论添加了后验

如下面的Gord Thompson所述,我放弃使用仅在本地SQL Server会话期间存在的本地临时表#tblTmpYaks。相反,这里使用了一个全局临时表## tblTmpYaks,它可以通过直通查询隐含在Access报告的RecordSource中,并且当退出访问接口时会自动删除它。

1 个答案:

答案 0 :(得分:2)

与问题here类似,如果您使用SQL Server 全局临时表(##tblTmpYaks而不是{{1},那么您可能会有更好的运气}})。如果您通过Access中的CREATE TABLE Pass-Through查询创建表,那么该表应该保持不变,直到您关闭Access(除非您首先明确地显示DROP TABLE)。