在ms Access 2010中的导航选项卡中加载新表单

时间:2013-09-18 21:31:53

标签: vba ms-access access-vba ms-access-2010

我在Microsoft Access 2010数据库中创建了以下导航结构:

您可以看到有两个选项卡,选项卡的数据填充了链接到ClientID的信息,ClientID存储在表单顶部的不可编辑文本框中。选择“通信表单”选项卡后,将显示已为特定ClientID完成的通信表单列表。还有一个按钮来创建一个新表单。我的问题是如何编写宏以便单击“创建新表单”按钮将导致在表单列表当前占用的空间中加载一个空白的新表单?

以下是我到目前为止的情况。它将用户发送到新表单,而不是将新表单嵌入当前表单中的“通信表单”选项卡下。如何更改以下内容,以便在当前表单的“通信表单”选项卡下加载空白新表单,以便所有导航控件保持可见/可用?

编辑:

为了解决HK1的假设,我在上面的屏幕截图中添加了以下为创建表单所采取的步骤说明:

1.) I created a blank form in design view.
2.) I added a listbox to list client fullname and id, and a textbox to filter the listbox.
3.) I added the clientid and fullname textboxes to the form, and set them to change based on  
    what the user selects from the listbox  
4.) I dragged a navigation control onto the form next to the listbox  
5.) I dragged a form called "ListOfForms" onto a new tab in the navigation control to create the tab  
6.) I added the CreateNewForm command button to the ListOfForms form while embedded in the main form  

以下是HK1建议代码的结果:

虽然我很感激,但它并不能满足我的需要。您可以看到它只是在ListOfForms的列表中添加了一行。相反,我需要代码将空白的MyForm放在ListOfForms当前所在的MainForm的位置。因此,在CommunicationsForms选项卡下,所有用户都会看到一个空白的MyForm对象,它与ListOfForms的形式不同。

当我在布局视图中单击ListOfForms所在的位置时,我看到它在属性表中被称为NavigationSubForm。因此,当用户单击“创建新表单”命令按钮时,NavigationSubForm将交换MyForm代替ListOfForms。但是,如果用户再次单击CommunicationForms选项卡,则ListOfForms将再次放置在NavigationSubForm中。

我尝试了以下内容:

Private Sub cmdCreateNewForm_Click()
    Forms!MainForm!NavigationSubform = MyForm
End Sub  

但是它会生成运行时错误'438':对象不支持此属性或方法。

接下来,我试过了:

Private Sub cmdCreateNewForm_Click()
    Forms!MainForm.NavigationSubform.SourceObject = MyForm  
End Sub  

这会导致NavigationSubForm变为空白,因此ListOfForms会消失。这似乎我在正确的轨道上,但我需要做什么才能让它在NavigationSubForm中放置一个空白的MyForm而不仅仅是一个空的空间?

1 个答案:

答案 0 :(得分:2)

您标记为“表单列表”的表单似乎是所谓的连续表单,我猜它位于另一个表单上的子表单控件中。我也猜测你的“创建新表单”按钮可能位于连续表单的标题部分。我也假设您的连续表单/子表单绑定到可编辑的记录集/记录源,但我无法通过查看屏幕截图来判断它。

有了这些假设,“创建新表单”按钮的代码可能是这样的:

Private Sub cmdCreateNewForm_Click()
    Me.AllowAdditions = True
    DoCmd.GoToRecord, , acNewRec
End Sub

如果我上面的任何假设都不正确,那么此代码可能无法正常工作。

请注意,连续表单(和数据表表单)中的新记录始终显示在列表的底部。我不知道有任何简单的方法让它们出现在其他任何地方。