【问题标题】:How to use SQL Server Temporary table #tblTmpYaks in Microsoft Access VBA?如何在 Microsoft Access VBA 中使用 SQL Server 临时表 #tblTmpYaks?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多