0

我有一个带有 3 个选项卡的导航表单。房屋,客户,装饰。

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

在每个选项卡内的子表单上,它都有一个名为 LOT_NUMBER 的字段。

由于导航表单似乎无法实现主/子关系,因此我正在寻找子表单以在加载时进行过滤。

用户在 LOTNUMSELECT 中输入很多 #,然后单击选项卡。When the tab becomes current, the specific lot # (record) is showing.

我一直在从“控制面板”表单中执行此操作,并使用以下代码打开另一个表单。

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

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

4

2 回答 2

0

导航控件有两个部分。导航菜单和一个导航子窗体。每个导航按钮(又名选项卡)都会将目标表单加载到导航子表单控件中。一次只能将一个表单加载到导航子表单中。由于导航子表单会打开您的目标表单,因此您可以使用标准的“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 上进行设置。这将提高你的表现。

于 2015-10-05T20:40:03.170 回答
-1

第2部分

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

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

我认为您会发现使用“选项卡控件”更容易,在这种情况下更容易使用。

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

以下是有关使用选项卡控件的视频链接: 视频 1 视频 2

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

这是我在导航控件附近所做的一些注释:

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

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

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

于 2015-10-05T13:54:22.450 回答