0

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

您可以看到有两个选项卡,选项卡的数据填充了链接到 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 中的列表中添加了额外的一行。相反,我需要代码在 ListOfForms 当前所在的 MainForm 位置放置一个空白 MyForm。因此,在 CommunicationsForms 选项卡下,用户将看到的只是一个空白的 MyForm 对象,它是与 ListOfForms 不同的表单。

当我在Layout View中点击ListOfForms所在的位置时,我看到在Property Sheet中它被称为NavigationSubForm。因此,当用户单击 Create New Form 命令按钮时,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 而不仅仅是一个空白空间?

4

1 回答 1

2

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

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

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

如果我上面的任何假设都不正确,那么这段代码很可能无法按预期工作。

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

于 2013-09-19T17:01:41.077 回答