我有一个访问2010数据库,其主窗体'MainForm'和子窗体'SubForm'。 SubForm作为Subform / Subreport对象附加到MainForm。用户将从下拉列表中选择唯一标识符,子表单应使用该标识符来提取子表单上的员工信息。我尝试了很多方法......
Private Sub Dropdown_Exit(Cancel As Integer)
If IsNull(Me!Dropdown) Or Me!Dropdown= "" Then
' nothing to do due to no one selected
Else
Forms!MainForm!SubForm.Requery
' Forms!SubForm.Requery
' DoCmd.OpenForm "SubForm",,,"[ID]=" & me!SubForm!ID,,acDialog
End If
End Sub
注释掉的陈述只是我尝试过的一些事情。
提前致谢
答案 0 :(得分:0)
通过在主窗体上指定子窗体控件的LinkMasterField和LinkChildField属性,您应该可以在没有任何代码的情况下执行此操作。
很明显,LinkChildField应该在表单设计模式下设置为ID
。您似乎想要将LinkMasterField设置为Dropdown
。您可以将FilterOnEmptyMaster
属性设置为是以在填充下拉列表之前隐藏所有记录,或者设置为否以在显示下拉列表之前显示所有记录。
修改强> 如果LinkMaster / LinkChild不合适,则为Dropdown的AfterUpdate事件的代码。通过键盘或鼠标完成选择后会触发此功能。它应该看起来像:
Private Sub Dropdown_AfterUpdate()
If Len(Me!Dropdown & "") = 0 Then
'' handle cleared Dropdown
Else
Subform.Form.Filter = "[ID] = " & Me!Dropdown
Subform.Form.FilterOn = True
End If
End Sub
更改过滤器应更新子表单。