我的Microsoft Access 2013数据库包含三个主要表:如果产品是矩阵(多种变体,如颜色)而不是单个独立产品,则主要供应商表,产品表和产品从属表。< / p>
我已经使用本教程创建了一个与Access 2013相当不错的界面:https://www.youtube.com/watch?v=4ei0PFrDUa0创建一个从供应商填充的下拉列表,以限制显示为来自该供应商的产品。我还能够在嵌入式产品数据表(https://www.youtube.com/watch?v=GopSdt4QNck)中创建一个链接,以便为任何一个产品启动一个表单来编辑该产品(链接而不是按钮,因为数据表不能包含按钮)。
我现在的困难在于,我想在嵌入式产品下面形成一个按钮,不仅会启动添加新产品的空白表单,还会使用供应商的ID预先填充产品的外键。从下拉菜单中。
所以请记住,我现在有三种形式,我想添加第四种形式。一种形式是包含下拉列表的整体“供应商”表单。该下拉列表会修改其中的嵌入表单(“产品展示”),以仅显示从下拉列表中选择的那个供应商的产品。嵌入式表单的行只显示有关产品的两个最重要的信息(我们在内部用来识别它的代码及其名称)和链接。此链接与该产品相关联,并启动“产品编辑”表单,该表单使用该特定产品预先填充表单以进行编辑(并具有该表中的所有详细信息)。
所以这是三种形式。我现在想在第一个表单(带下拉列表的表单)中添加一个按钮,启动类似于“产品编辑”表单的“产品创建”表单,但仅包含必要字段和外键(供应商ID)预先填充到单击按钮之前在下拉列表中选择的最后一个供应商。这意味着每次使用下拉列表时按钮都必须动态更改。
问题是,我没有在Access 2013中如何做到这一点最模糊的概念。使用向导的标准按钮确实允许我生成一个新的“产品创建”表单,但没有办法预先填充只使用向导本身的外键。另外,我不知道如何在每次使用下拉菜单时自动修改按钮。
答案 0 :(得分: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事件上解压缩它们。
希望有所帮助。