0

我的 Microsoft Access 2013 数据库包含三个主要表:如果产品是矩阵(多种变体,如颜色)而不是单个独立产品,则为产品的主供应商表、产品表和从表。

我已经使用本教程使用 Access 2013 创建了一个相当不错的界面:https ://www.youtube.com/watch?v=4ei0PFrDUa0创建一个从供应商填充的下拉列表,以限制显示为来自该供应商的产品. 我还能够在嵌入式产品数据表 ( https://www.youtube.com/watch?v=GopSdt4QNck ) 中创建一个链接,以便为任何一种产品启动一个表单来编辑该产品(链接而不是按钮因为数据表不能包含按钮)。

我现在的困难是我想在嵌入式产品表单下方放置一个按钮,该按钮不仅可以启动用于添加新产品的空白表单,还可以使用下拉菜单中的供应商 ID 预填充产品的外键-向下菜单。

所以请记住,我现在有三个表格,我想添加第四个。一种表格是包含下拉菜单的整体“供应商”表格。该下拉菜单会修改其中的嵌入表单(“产品显示”),以仅显示从下拉菜单中选择的供应商的产品。嵌入式表单的行仅显示有关产品的两个最重要的信息(我们在内部使用的代码及其名称)和一个链接。此链接与该产品相关联并启动“产品编辑”表单,该表单使用该特定产品预填充表单以进行编辑(并具有该表中的所有详细信息)。

所以这就是三种形式。我现在想在第一个表单(带有下拉菜单的表单)中添加一个按钮,该按钮启动类似于“产品编辑”表单的“产品创建”表单,但只有基本字段和外键 (供应商 ID)预填充到单击按钮之前在下拉列表中选择的最后一个供应商。这意味着每次使用下拉菜单时按钮都必须动态更改。

问题是,我不知道如何在 Access 2013 中执行此操作。在向导中使用标准按钮确实允许我生成一个新的“产品创建”表单,但无法预先填充外键仅使用向导本身。另外,我不知道每次使用下拉菜单时如何让按钮自动修改。

4

1 回答 1

1

让我们看看我是否可以清楚地解释这一点。

假设您有两个表格,附有表格:

  • 父表格
  • 子表

每个附表定义为:

家长:

ParentID (AutoNumber)
ParentName Text

孩子:

ChildID (AutoNumber)
ParentID Long Integer
ParentName Text

每个表单都显示了它的所有字段。父窗体有一个添加子窗体的按钮。

父表格上的 VBA 代码是:

Private Sub AddButton_Click()
  DoCmd.OpenForm FormName:="Children", view:=acNormal, OpenArgs:=Me.ParentID
End Sub

子窗体上的 VBA 代码是:

Private Sub Form_Dirty(Cancel As Integer)
  Me.ParentID = Me.OpenArgs
End Sub

那么这是如何工作的呢?我们通过 OpenArgs 参数将 ParentID 传递给 Child 表单。( http://msdn.microsoft.com/en-us/library/office/ff836583.aspx )

在修改任何记录之前,会触发Dirty事件(当用户在新记录中键入第一个字符时)。我们定义了 Dirty 事件来设置 ParentID。

理论上,您可以填充多个外键或值。您需要将它们打包成一个分隔字符串,然后在孩子的 onDirty 事件中解压缩它们。

希望有帮助。

于 2013-10-17T21:51:09.687 回答