我可以在 MS Access 2013 中根据另一个表中的值生成多条新记录吗?

Posted

技术标签:

【中文标题】我可以在 MS Access 2013 中根据另一个表中的值生成多条新记录吗?【英文标题】:Can I generate multiple new records based on value in another table, in MS Access 2013? 【发布时间】:2017-04-14 16:10:14 【问题描述】:

我将通过预先承认我 不是专业程序员或数据库设计师来证明这一点。我有一个特定的问题要解决——需要管理大量关于员工福利请求的信息——以及有限的资源,并建立了一个数据库来替换我继承的 Excel 电子表格。我边走边学,我真正想知道的是,Access 能否实现我的设想,或者我是否需要调整我的目标?

我的数据库包括的主要表是 EMPLOYEES、REQUESTS、TASKS 和 ACTIVITY(加上一些用于下拉字段的辅助表等)。每个员工可以有多个请求,对于每个请求,我使用 TASKS 来跟踪需要完成的所有工作、由谁以及何时完成,以从头到尾查看请求(我是dbase 文件本身,但我将任务列表作为报告发布给相关人员)。正如您所期望的那样,活动是一种“日志”功能,我可以在其中跟踪所做的事情、对话等。

我现在要做的是加快任务进入的过程,因为对于 MOST 请求,任务流程非常相似。我已经为“TASK OWNER”和“TASK CATEGORIES”创建了表 - 两者都与我的主 TASKS 表相关 - 所以我可以标准化这些字段的数据输入,除了对其进行过滤(“向我展示员工拥有的一切”) .任务有一个“注释”字段,因此我可以在不更改下拉列表的情况下个性化条目。这是一个进步,但我仍然花费太多时间向我设置的每个新请求添加相同的任务。

我脑子里一直在玩的是用某种代码来识别任务,这些代码将它们与一种请求类型相关联 - 即,员工的学费报销请求被识别为“请求类型 001”,并且所有任务通常与学费报销一起使用的查找字段将它们连接回“001” - 这样当我选中一个框或从我的表格的下拉列表中选择“001 - 学费报销”时,6或8“标准”任务会自动放入 TASKS 子表单,但它们是新记录 - 而不仅仅是我从任务类别中查询的“模板任务”。我希望能够在不影响任何其他请求的情况下调整、编辑、更新甚至删除它们。

我发现了很多通过 APPEND 查询添加新记录的信息,但如果有意义的话,它似乎仅限于为每个“事务”生成一个记录 - 每次查询找到它的值并执行操作时,生成一条记录。如何让 Access 识别一个值(请求类型)并将与该请求类型关联的每个任务生成为 TASKS 中的新记录?

【问题讨论】:

是的,你可以。但要获得实际答案,请阅读以下内容:How to ask a good SQL question。 谢谢,现在阅读。对不起,这本来可以更好。我的想象力超出了我的技能,我很不耐烦。 :( 【参考方案1】:

用户从多列组合框中选择请求类别,例如“学费报销”。组合框的隐藏列具有类别代码,这是绑定列,因此这是组合框的值。然后保存多条记录的代码如下:

CurrentDb.Execute "INSERT INTO Tasks(RequestID, TaskDesc) SELECT " & _ 
     Me.tbxReqID & " AS RID, TaskDesc FROM TasksCategories WHERE TaskCat = " & Me.cbxCategory 

真正的诀窍是弄清楚将这段代码放入什么事件中。输入某些数据元素后应该是自动的还是应该是按钮单击?那么就需要防止重复输入——如果用户不小心再次点击了那个按钮怎么办? (这可能通过表中的复合索引设置来处理。)此外,在请求表单上创建的新主记录必须首先提交到表。记录在关闭表/查询/表单、移动到另一条记录或运行命令保存时提交。

如图所示,您的要求当然是可能的,只要记住“越用户友好,代码越多”。

现在,当您开发具有特定问题的代码时,将其发布以供分析。

【讨论】:

以上是关于我可以在 MS Access 2013 中根据另一个表中的值生成多条新记录吗?的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 2013 - 根据文本框中的值过滤列表框中的值

在 ms access 2010 中将查询结果插入表中

MS Access 2013:表格中间歇性隐藏的记录

MS Access 2013 DoCmd for on click 函数返回错误

如何根据每条记录的连续表单中 ms-access 中的其他值填充文本框上的值

MS Access Query 根据本地数据还是网络数据返回不同的结果