在进行MainForm更改后,SubForm将不会重新查询

时间:2014-09-30 20:12:04

标签: sql ms-access subroutine subform

我有一个访问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 

注释掉的陈述只是我尝试过的一些事情。

提前致谢

1 个答案:

答案 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

更改过滤器应更新子表单。