【问题标题】:Loading new form within a navigation tab in ms Access 2010在 ms Access 2010 的导航选项卡中加载新表单
【发布时间】:2020-07-12 15:52:48
【问题描述】:

我在 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 而不仅仅是一个空白空间?

【问题讨论】:

  • 必须是宏吗?您会考虑改用 VBA 吗?
  • 用vba这应该比较容易吧?
  • 是的,事实上,如果您只是将表单的 AllowAdditions 设置为 Yes/True,您甚至不需要这个。另外,我认为您错误地使用了“表单”一词。在大多数情况下,当您说表单时,实际上是指记录。
  • @HK1 谢谢。你能告诉我它的样子吗?我是新手。
  • @TheLaurens 谢谢。你能告诉我如何在VBA中做到这一点吗?我是 VBA 新手,但代码示例帮助我快速学习,因为我知道如何用其他语言编写代码。

标签: vba ms-access


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢。 +1 试图提供帮助。我尝试了您的代码,它在 ListOfForms 中添加了另一行。那不是我想要的。相反,我希望 MyForm 显示 ListOfForms 所在的位置(而不是 ListOfForms),以便用户可以使用他们熟悉的 GUI 来创建表单。 MyForm 相当长且复杂,不能用数据表中的一行来概括。另外,如果对您有帮助,我在上面的原始帖子的编辑中添加了对如何创建整个事物的描述。你能告诉我如何回答我澄清的问题吗?
猜你喜欢
  • 1970-01-01
  • 2016-10-18
  • 2013-11-10
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2013-12-20
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多