2017-08-11 35 views
0

K访问专家的。我有一个模块,查询是一个主窗体,然后根据字段中的值设置一个过滤器,并使用该过滤器查询子窗体。问题是当我设置subform.FilterOn = True时,它不做任何事情并返回False。我宁愿不上传整个解决方案。但继承人的代码截图screenshot与突出部分显示差异。以下是用于复制/粘贴目的的代码。为什么这不起作用?。过滤器方法不工作

Private Sub Combo7_AfterUpdate() 
Dim strSQL As String 
Application.Echo False 
strSQL = "[APN] = " & Str(Nz(Me![Combo7], 0)) 
DoCmd.ApplyFilter wherecondition:=strSQL 
Me![Combo22].Requery 
Me![Combo22] = Me![Text24] 

Dim val As String 
Dim subform1 As Form 
Dim subform2 As Form 
Dim subform3 As Form 
val = Me![Text24] 

Set subform1 = Me.qPayment_subform.Form 
Set subform2 = Me.qRefundWriteOff_subform.Form 
Set subform3 = Me.qRetnCHK_subform.Form 
subform1.FilterOnLoad = True 
subform2.FilterOnLoad = True 
subform3.FilterOnLoad = True 
subform1.FilterOn = True 
subform2.FilterOn = True 
subform3.FilterOn = True 
subform1.Filter = "PeriodID = " & val 
subform2.Filter = "PeriodID = " & val 
subform3.Filter = "PeriodID = " & val 
subform1.Requery 
subform2.Requery 
subform3.Requery 

Application.Echo True 
End Sub 
+0

为什么子窗体没有链接到子窗体容器控件的主/子链接属性的主窗体记录? – June7

+1

尝试**首先**设置'.Filter'和**然后**'.FilterOn'。 – Andre

回答

0

给子窗体容器控件一个与其持有的对象不同的名称。例如,如果表单名为frmOrderDetails,则命名容器ctrDetails。然后可能使用容器名称来设置对象变量将起作用。如果不是,请考虑消除变量并仅引用容器名称。

我知道这意味着重复.FORM但会快速编辑。

无论如何,在FilterOn之前设置Filter属性。
此外,FilterOnLoad和Requery不是必需的。