【问题标题】:including Subform primary key into main form foreign key包括子形式主键到主形式外键
【发布时间】:2017-12-26 22:05:28
【问题描述】:

我创建的主要表单的目的是让我的同事能够在一个地方输入有关我们收到的各种投诉的信息。我们有三种类型的投诉,每种都有自己的表格,其中一个是我的主表格中的子表格。子表单的表的主键由用户输入。我还没有找到一种方法可以将该主键添加到为该条目生成的记录中。我正在使用 MS Access 2007,唯一接近我想要的代码是:

    Private Sub Booking_Reference_Number_Exit(Cancel As Integer)
     If Not IsNull(Form![Booking Reference Number]!PK_Booking_Ref_Number) Then
      Dim mydb As Database
      Dim rst As DAO.Recordset

      Set mydb = CurrentDb()
      Set rst = mydb.OpenRecordset("Incident_Report")

      rst.AddNew
      rst![FK_Booking_Ref_Number] = Form![Booking Reference Number]!PK_Booking_Ref_Number
      rst.Update

      Set rst = Nothing
      Set mydb = Nothing

     End If
    End Sub

感谢您的帮助。

【问题讨论】:

  • 问题是什么?代码执行时会发生什么——错误消息、错误结果,什么都没有?我不了解数据结构,也不了解您尝试编码的过程。为什么需要代码来创建记录?为什么不绑定表格?
  • 通过父子链接链接的字段不会用相关记录的主键值填充外键。让字段处于一对多关系似乎也不起作用。我的理解是,由于这些字段来自另一个表,因此它必须位于子表单中。我试图确保我的用户只担心填写主表单上的信息。我需要帮助找出可以为我完成此任务的代码。
  • 如果这些表打算具有父/子关系并且设置了子表单容器控件的主/子链接属性,则主记录中的 PK 将在任何其他时填充子表单中的 FK 字段数据输入到子表单记录。为什么没有任何数据供用户在子表单上输入?听起来很不寻常。
  • PK在子窗体中,FK在主窗体中。我进行了设置,以便在填写主表单时创建子表单表中的记录
  • 这完全是对传统结构的倒退,真的无法想象任何可行的情况。

标签: ms-access vba ms-access-2007


【解决方案1】:

您是否尝试将 FK 字段(在子窗体上)的 默认值 设置为主窗体上的 PK 名称?例如 - [MainForm]![ControlName]

【讨论】:

  • 反之亦然吗?我的子窗体有 PK,主窗体表有 FK
  • 行不通。我知道,子表单在主表单之前加载,这很奇怪但确实如此。子表单容器的主/子链接属性确实不需要。
  • 我会玩一个简单的主窗体和子窗体,看看是否有办法让子窗体表中的 PK 包含在主窗体的表中,因为这听起来像核心我的问题。尽管最初发布的代码表可以包含在主表单表中,但我还有另一个不应该包含的表。
  • 反之则要求用户先在子表单上选择记录,然后在主表单上开始输入。
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多