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

如何在Microsoft Access VBA中使用SQL Server临时表tblTmpYaks?,sql,sql-server,vba,ms-access-2007,temp-tables,Sql,Sql Server,Vba,Ms Access 2007,Temp Tables,我需要创建一个本地临时表tblTmpYaks,然后在此临时表中选择要在直通查询中显示的记录 临时表的创建方式如下: 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

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

临时表的创建方式如下:

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时所示:

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

如何做到这一点

结论增加了后验概率
如下所述,我放弃使用仅在本地SQL Server会话期间存在的本地临时表TBLTMPYAK。相反,此处使用了一个全局临时表tblTmpYaks,它可以通过直通查询隐含在Access报告的RecordSource中,并且当退出Access接口时,它将自动删除。

,方式与问题类似,如果使用SQL Server全局临时表tblTmpYaks而不是tblTmpYaks,您的运气可能会更好。如果您通过Access中的create table Pass-Through查询创建表,则该表应一直保留,直到您关闭Access,除非您先显式删除表。

在其他会话上执行传递查询。为什么不创建一个存储过程来创建表,填充表,然后从中进行选择?现在只需从Access调用存储过程。本例就是一个例子,我希望将来作为连接表使用的tblTmpYaks在Access.Report中用作记录源。存储过程可以做到这一点吗?我很确定这取决于牦牛是否被剃须。最近,我回答了一个关于全局临时表的类似问题。这个答案有用吗?@Gord Thompson,是的,我用tblTmpYaks测试,都很好。请给我这个答案,我什么时候删除tblTmpYaks。。。退出访问或关闭报告时?