Microsoft Access等效于“创建表#Tablename”?

时间:2014-09-08 02:21:01

标签: sql ms-access ms-access-2010

我想创建一个临时表,纯粹是为了创建一个更简单的用户界面功能,它必须只对当前用户可见。我无法在Access中看到如何实现这一点:显然Access中的“创建”与标准SQL不同:但是有一个“临时”选项(根据http://msdn.microsoft.com/en-us/library/bb177893(v=office.12).aspx):

  

“创建TEMPORARY表时,它仅在   创建它的会话。当它被自动删除   会话终止。临时表可以访问多个   一个用户。“

这是我遇到问题的最后一句话。我可以看到“普通数据库”你会使用SQL“创建表#whatever”...所以我想用Access模仿它。

解释整个情况有点啰嗦,道歉如果我不够清楚,因为我试图避免写一些愚蠢的不必要的细节:基本上我所拥有的是一个“员工”记录他们执行的“任务”数量。我的“EmployeeTasks”表中每个任务都有一个“百分比”字段(即用普通英语“员工A(f.key)执行任务B(f.key)当天X%”。

要在用户界面中维护这些信息,要求用户手动输入百分比有点“麻烦”......在我看来,人们并不认为“我一天工作7.6小时,我做10任务,我执行此任务3.528%的时间,此任务9.813%的时间......“等...我想要呈现给用户,是他们的任务列表,(以连续的形式)与他们的任务工作表示为每天的小时和分钟。

所以我的理论是,创建一个包含小时和分钟外推的临时表,显示基于该表的表单,然后用户可以编辑那些小时和分钟,“更新”功能将获取这些数字并转换回百分比基于总和。这样,用户不必担心准确确保所有小时和分钟增加到7.6小时,并且不必担心所有百分比增加到1等...有一个大的可接受的误差范围(因为显然大多数人不会在规定的时间内执行任务,我们只收集粗略的信息。

似乎最简单的方法是创建基于临时表[编辑添加]的表单:但如果多个用户编辑不同的员工,他们将覆盖彼此的临时表,除非我可以创建用户唯一以某种方式表[/编辑]。我想的另一种方法是动态创建每个任务的控件列表并从中读取,但是当员工有大量任务时,这会很快变得混乱。谢谢你的帮助,西蒙

1 个答案:

答案 0 :(得分:3)

确实,Access SQL不支持CREATE TABLE #TableName来创建特定于会话的临时表,如T-SQL,但实际上它并不需要。这就是原因:


使您的Microsoft Access数据库应用程序支持多个并发用户

  1. 必须 将数据库拆分为前端数据库文件(包含查询,表单,报告,代码)到后端数据库文件(仅包含数据表)和

  2. 每个用户 必须 拥有自己的(本地)前端数据库文件副本。

  3. 任何两个用户都不应该直接同时打开相同的.mdb或.accdb文件,例如双击它或在Access中执行File > Open。 (更多细节here)。


    前端的VBA代码可以在前端创建临时表,您的应用程序可以使用它。 Access允许我们构建使用链接表JOIN本地表的查询,因此(本地)临时表可以像T-SQL中的#Temporary表一样使用。

    由于每个用户都有自己的前端文件副本(上面的第2点),因此每个用户都有自己的应用程序可能创建的临时表副本。