1

我需要帮助制作表格以输入用于一大群人的小时数;我不确定如何为多个关联记录生成新/空记录并一次显示它们

该数据库旨在按工资周期跟踪 200 名员工的工时,并为每组使用的工时提供认证。每个员工只分配到一个部门,每个认证都分配给一个员工,每个小时事件(因为没有更好的术语)被分配到一个认证一个支付周期。

我需要为每个工资期给工资单职员一张空白表格,显示职员负责的部分中的所有员工,并为该工资期的每个员工创建一个新的小时记录。我们需要能够在一个长列表中显示该部分的所有员工;没有使用记录选择器在记录之间进行洗牌。

(在理想的世界中,如果员工在该支付期间实际使用了小时数,我们只会创建新记录,但我愿意接受创建大量使用 0 小时的“小时”记录,如果这是更简单的方法它。)

关联表/字段
List_Sections:SectionID
List_Employees:EmployeeIDSectionID
List_Certifications: CertIDEmployeeID
List_PayPeriods:PeriodID

表添加到
List_Hours:HoursIDHoursUsedCertIDPeriodIDHoursID是自动编号)

该表格将向职员提出以下问题:

  1. 你是谁?(他们从组合框中选择他们的名字;这已解决)
  2. 您要为哪个部分添加小时数?(只能从他们负责的部分中选择;这个已经解决了)
  3. 您要为哪个支付期输入数据?(可以选择未来两周或一年后的任何支付期)

这应该使用以下列填充数据表/表格子表单:

  1. EmployeeID(为该部分中的每个员工自动生成的一行
  2. PeriodID(由店员在问题 3 中选择的内容自动填充)
  3. HoursUsed(他们会输入这个)
  4. CertID(这是一个仅限于与相关员工相关的认证的组合框;我需要弄清楚如何使新工时记录的默认值成为该员工的最新认证)
  5. HoursID(这将是自动编号,我实际上可能不会将其粘贴在表单上,​​因为我怀疑我的用户可能会尝试删除/更改它并感到沮丧。)

我还想提取之前为给定员工在此支付期间创建的任何现有记录,但这是次要优先级(我已经有一个查询会提醒我们奇怪的情况,比如有人使用 160 小时两周内,并输入了一个用于编辑现有时间的表格。)

相关资料:

  1. 我正在使用 Access 2010。
  2. 我对 Microsoft Office 产品的理解很好,但是我对 VBA 的理解很差,而且我已经有十年没有用比 Excel 中的“连接”更高级的任何类型的代码做这么多的工作了;我为我最终运行的级联组合框感到非常自豪。
  3. 我的办公桌上有一本“Access 2010: The Missing Manual”,但没有其他纸质参考资料。如果这个答案在本手册的某个地方,我会向教我如何在书中找东西的人要求退款。
  4. 好吧,好吧,我承认,他们实际上会在表单上看到诸如“员工全名”和“具有多个相关详细信息的认证描述”之类的字段。这些在相关表上,由更新查询定期更改,(一旦我完成了这个数据库)将每天或两天自动运行一次。因为我被告知永远不要在我的表中放置计算字段或查找。

我一直在努力思考这个问题,但我被困在“我想知道你是否可以做一些事情,比如将附加查询作为“更新后”事件过程运行......”我希望有一个更优雅的我还没有想到的解决方案。

4

1 回答 1

0

根据您对需求的(非常好的)描述,我倾向于同意在一开始就创建所有可能相关的 [List_Hours] 记录可能是最好的方法。是的,仅包含 0 小时的记录会出现一些“膨胀”,但存在这些记录将使数据输入和报告更容易。

我被困在“我想知道您是否可以执行诸如将附加查询作为“更新后”事件过程运行之类的操作……”我希望我还没有想到一个更加优雅的解决方案。

我看不出有什么不雅之处。如果此时您有足够的信息来确定需要存在哪些 [List_Hours] 记录,那么就该确保它们存在了。

对于这种方法,我能看到的唯一问题是 [List_Hours] 仅通过 [CertID] 与员工建立了间接链接。将小时数直接链接到员工可能更有意义(即,使用 [EmployeeId] 而不是 [CertId]),这样您就可以在知道有问题的 Section 和 Pay_Period 后立即创建 [List_Hours] 记录。

于 2013-03-12T13:11:28.030 回答