如何过滤加载与微软访问导航表单



我有一个有3个选项卡的导航表单。家庭,客户,装饰。

在导航表单上,我有一个未绑定的字段LOTNUMSELECT。

在每个选项卡中的Subform上,它有一个名为LOT_NUMBER的字段。

由于主/子关系似乎不可能与导航表单,我正在寻找子表单过滤加载。

用户在LOTNUMSELECT中输入lot #,然后单击选项卡。当标签变为当前时,将显示特定批号(记录)。

我一直在做这个从"控制面板"表单打开另一个表单与以下代码。

Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Decor"
If IsNull(LotNumberSelect.Value) = True Then
MsgBox "Please enter a lot number first."
Else
stLinkCriteria = "[Lot_Number]=" & "'" & Me![LotNumberSelect] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
End If

我只是不知道如何编辑这个工作与导航表单和子表单

导航控件由两部分组成。导航菜单和导航子表单。每个导航按钮(又名选项卡)将加载一个目标表单到navigationsubform控件中。一次只能将一个表单加载到navigation子表单中。由于navigationsubform打开了目标表单,因此可以使用标准的"form_open"方法来设置过滤器或相应地设置记录集。你所要做的就是点击表单的打开事件在该事件中你可以通过

访问父控件
 dim lotno as long
Lotno = nz(me.Parent!controlname.value,0)
If lotno <> 0 the 
' do your filter or recordset operation
End if

你也可以使用form_load事件。由于您将在加载后执行过滤器,因此最好将其设置在form_open上。这将提高你的表现。

PART2

在做了一些实验之后,我有了更多的想法。

我认为导航控件不适合你的情况。导航控件似乎没有事件和属性,可以让您将其链接到具有导航控件的主窗体上的控件(我认为这就是您正在尝试做的)。

我想你会发现使用"tab控件"更容易,在这种情况下,它更容易工作。

我认为导航控件实际上被设计成一个菜单,允许您访问其中的其他表单和报表。

这里有一个关于使用标签控件的视频链接:视频1视频2

这里有一些关于使用导航控件的视频链接:视频1视频2视频3

下面是我对导航控件做的一些注释:

导航控件有一个"导航子表单",它没有任何主/子数据链接字段。但是,此子表单不是普通的子表单。

使用导航控件,您必须将导航按钮(在导航菜单中)的"导航目标名称"属性设置为单击按钮时希望在导航子表单中显示的表单。

此外,该按钮有一个属性"Navigation Where子句",我相信它被用来设置过滤加载表单时显示的行。当在主窗体上使用控件时,似乎不存在允许您更改此筛选器的事件。

最新更新