我构建了一个未绑定的表单,允许用户从包含相关信息的两个组合框中选择(区域和分区单元 - 每个区域包含多个分水岭单元),以查看适用于每个组合的规则。根据这些选择(存储在主窗体上的txtZone
和txtWU
),子窗体将显示现有规则(基于qryRegsbyZWU的sfrmRegsbyZWU)。这可以作为用户的参考,用户可以从另一个子表单中选择要添加的新规则,单击按钮,并将选择添加到所选区域/分区单元的规则中。我在子窗体的OnCurrent
事件中成功构建了一个变通方法(这是不可取的,因为用户无法单击记录并将其删除)并且一切正常,直到我添加插入的代码来更改查询定义对于查询而言,该查询是子表单的基础,而不是在子表单的“On current
”事件中。
此时,以前工作过的主窗体中的requery语法停止工作。这一切都嵌入在Access 2010中的导航表单中,因此以前使用的语法是:
Forms!frmNav!NavigationSubform.Form.sfrmRegsbyZWU.Requery
我已经尝试过每一个我能想到的Requery的排列,但我无法让它发挥作用。基础查询已更改,但表单不会更新以反映它。任何人都可以向我解释出了什么问题,以及如何解决它?代码(附加到组合框的_After Update()
事件)是:
Private Sub cboZone_AfterUpdate()
'Changes WU combo box as well as the underlying text boxes
Me.cboWU.SetFocus
Me.cboWU = ""
'Blank out other selections
Me.txtWU.SetFocus
Me.txtWU = ""
'Update text box with combobox selection
Me.txtZone.SetFocus
Me.txtZone = Me!cboZone.Column(0)
'Change the query underlying the Existing Regs panel (frmRegsbyZWU, qryRegsbyZWU) to reflect selection
Dim strZSQL As String
Set qdfZ = CurrentDb().QueryDefs("qryRegsbyZWU")
Dim myZVar As Variant
myZVar = Forms!frmNav!NavigationSubform.Form.txtZone
'MsgBox (myZVar)
If IsNull(myZVar) Then
strZSQL = "SELECT * FROM tblRegulations WHERE FALSE"
Else
strZSQL = "SELECT * FROM tblRegulations WHERE Zone_No=" & Forms!frmNav!NavigationSubform.Form.txtZone
End If
'MsgBox (strZSQL)
qdfZ.SQL = strZSQL
'DoCmd.OpenQuery ("qryRegsbyZWU")
Forms!frmNav!NavigationSubform.Form.sfrmRegsbyZWU.Requery
提前感谢您的帮助!