【发布时间】:2013-10-16 22:40:51
【问题描述】:
我需要创建一个本地临时表#tblTmpYaks,然后选择该临时表中的记录以显示在 PassThrough Query 中。
临时表是这样创建的:
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:
这意味着 SQL Server 中不再存在 #tblTmpYaks。
如何做到这一点?
结论添加了后验
正如下面的Gord Thompson 所述,我放弃使用仅在本地 SQL Server 会话期间存在的本地临时表 #tblTmpYaks。取而代之的是这里使用了一个全局临时表,记为##tblTmpYaks,可以通过直通查询隐含在Access报表的RecordSource中,退出Access Interface时会自动删除。
【问题讨论】:
-
传递查询正在另一个会话上执行。为什么不创建一个存储过程来创建表,填充它,然后从中选择呢?现在只需从 Access 调用存储过程。
-
这个案例是一个例子,我希望将来用作连接表的#tblTmpYaks 用作Access.Report 中的RecordSource。存储过程可以做到吗?
-
我很确定这取决于牦牛是否被剃过
-
我最近回答了一个关于 global 临时表的类似问题here。这个答案有帮助吗?
-
@Gord Thompson,是的,我用##tblTmpYaks 进行了测试,一切正常。请给我这个答案,我什么时候删除 ##tblTmpYaks... 退出 Access 或关闭 Report 时?
标签: sql sql-server vba ms-access-2007 temp-tables