访问:在一个表单上为另一个表上的每个项添加记录

时间:2013-03-11 21:19:14

标签: database ms-access

我需要帮助使表单输入用于大量个人的时间;我不确定如何为多个相关记录生成新的/空记录,并且一次显示所有记录

此数据库旨在跟踪200名员工按工资期计算的小时数,并为每组使用的小时数提供认证。每个员工只分配到一个部门,每个员工只分配给一名员工,每个小时事件(缺少更好的条款)仅分配给一个认证一个支付期。< / p>

我需要为每个工资期间的工资单职员提供一个空白表格,显示职员负责的部分中的所有员工,为每位员工创建一个新的小时记录该付款期限。我们需要能够在一个长列表中显示该部分的所有员工;记录选择器的记录之间没有混乱。

(理想情况下,如果员工在该付款期内实际使用了几小时,我们只会创建新记录,但我愿意接受创建大量“小时”记录并使用0小时,如果这更容易这样做的方法。)

相关表格/字段
List_Sections: SectionID
List_Employees: EmployeeID SectionID
List_Certifications: CertID EmployeeID
List_PayPeriods: PeriodID

表格被添加到
List_Hours: HoursID HoursUsed CertID PeriodID HoursID 是自动编号)

表格会向店员提出这些问题:

  1. 你是谁? (他们从组合框中选择他们的名字;这已经解决了)
  2. 您想为哪个部分添加小时数? (只能从他们负责的部分中选择;这已经解决了)
  3. 您输入的数据是哪个付款期? (可以选择两周或一年后的任何支付期)
  4. 这应填充数据表/表格子表单,其中包含以下列:

    1. EmployeeID(为该部分中的每位员工自动生成一行
    2. PeriodID(由职员在问题3中选择的内容自动填充)
    3. 使用时间(他们将输入此内容)
    4. CertID(这是一个仅限于与相关员工相关的认证的组合框;我需要弄清楚如何使新工时记录的默认值成为该员工的最新认证)< / LI>
    5. HoursID(这将是自动编号,我可能实际上并没有将其粘贴在表单上,​​因为我怀疑我的用户可能会尝试删除/更改它并变得沮丧。)
    6. 我也喜欢来提取以前在给定员工的这个付费期内创建的现有记录,但这是次要优先事项(我已经有一个查询会提醒我们注意奇怪的情况,比如有人在两周内使用160小时,还有一个表单来编辑输入的现有小时数。)

      相关信息:

      1. 我正在使用Access 2010.
      2. 我对Microsoft Office产品的理解很棒,但是我对VBA的理解很差,而且我已经用了十多年的时间来处理任何比Excel中的“Concatenate”更先进的代码。我非常为我最终运作的级联组合框架感到骄傲。
      3. 我的桌面上有“Access 2010:The Missing Manual”的副本,但没有其他论文参考。如果这个答案在本手册的某处,我将要求教我如何在书中找到东西的人退款。
      4. 好的,我会承认,他们实际上会在表格上看到“员工的全名”和“有几个相关详细信息的认证说明”等字段。这些是在相关的表上,由更新查询定期更改,(一旦我完成此数据库)将每天或每两天自动运行一次。因为我被告知永远不会在我的表格中放置计算字段或查找。
      5. 我一直在努力思考这个问题并且我坚持“我想知道你是否可以做一些事情,例如将追加查询作为”AfterUpdate“事件程序运行......”我希望有一个很大的问题更优雅的解决方案还没有发生在我身上。

1 个答案:

答案 0 :(得分:0)

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

  

我坚持“我想知道你是否可以做一些事情,比如将追加查询作为”AfterUpdate“事件程序运行...”我希望有一个更优雅的解决方案,我没有想到爱好。

我认为没有任何不雅之处。如果那时您有足够的信息来确定哪些[List_Hours]记录需要存在,那么就是确保它们存在的时间。

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