如何使用Microsoft Access导航表单加载过滤器

时间:2015-10-05 13:38:06

标签: forms vba ms-access navigation subforms

我有一个带有3个标签的导航表单。家园,顾客,装饰。

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

在每个标签中的子窗体上,它有一个名为LOT_NUMBER的字段。

由于导航表单似乎无法实现主/子关系,因此我正在寻找要加载的子表单。

用户在LOTNUMSELECT中输入了很多#,然后点击一个标签。当选项卡变为当前时,将显示特定批次#(记录)。

我一直在"控制面板上做这件事"使用以下代码打开另一个表单。

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

我只是不知道如何编辑它以使用导航表单和子表单。

2 个答案:

答案 0 :(得分:0)

导航控件有两个部分。导航菜单和导航子表单。每个导航按钮(也称为选项卡)都会将目标表单加载到navigationsubform控件中。一次只能将一个表单加载到navigationsubform中。 由于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上设置它。这将提高您的表现。

答案 1 :(得分:-1)

PART2

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

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

我认为您会发现使用&#34;标签控件&#34;更容易,在这种情况下更容易使用。

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

这是指向使用标签控件的视频的链接: video 1 Video 2

以下是有关使用导航控件的视频的一些链接: video 1 video 2 video 3

这是我在导航控件上做的一些注意事项:

导航控件有一个&#34;导航子窗体&#34;它没有任何主/子数据链接字段。但是,此子表单不是正常的子表单。

使用导航控件,您必须设置&#34;导航目标名称&#34;导航按钮的属性(在导航菜单中)是您在单击按钮时要在navigationsubform中显示的表单。

此外,该按钮具有属性&#34; Navigation Where子句&#34;我相信用来设置过滤表格加载时显示的行。在主窗体上使用控件时,似乎没有允许您更改此过滤器的事件。