【问题标题】:Round about Form Copying绕行表格复制
【发布时间】:2017-10-17 20:03:13
【问题描述】:

有没有一种方法可以快速将表单的所有属性模拟成一个新表单,而无需直接复制对象(Ctrl-C&V 等)?

编辑:希望复制到完全不同的 Access 数据库中。

【问题讨论】:

  • 我只需复制并粘贴表单,然后删除其上的所有控件(以及 VBA 代码,如果有)。
  • 很多这些答案都很好,但我想我应该提到我的意思是将一个表单从一个访问数据库复制到一个完全不同的数据库中。
  • 然后导入表单,然后删除不需要的所有内容。
  • 应该可以在数据库之间进行复制,您必须创建一个 Access 应用程序的实例,将其设置为与源数据库相同,然后使用对象。如果这是一次性的工作,那么只导入表单然后复制属性可能会更快。

标签: forms ms-access copy ms-access-2016


【解决方案1】:

在设计视图中打开每个表单,将它们设置为对象变量,然后将源表单的属性设置为目标表单的属性。在公共模块中使用这样的函数:

Public Sub UpdateForm(SourceForm as string, DestinationForm as string)
    dim frm1 as new form
    dim frm2 as new form

    set frm1 = forms(SourceForm) 
    set frm2 = forms(DestinationForm}

    '* List the properties you want to copy here:

    With form2
      .RecordSource = frm1.RecordSource
      .Caption = frm1.Caption
      .DataEntry = frm1.DataEntry
      '* And so on for each property
    End With

    docmd.save acform, DestinationForm

End Sub

如果它不是一次性项目,我会包含一些代码来检查并打开尚未打开的表单。

【讨论】:

  • 请注意,复杂的属性(例如表单模块和控件)不会轻易复制
  • 不希望复制组合框或按钮等控件。但我希望复制“默认视图:连续”、高度、BG 颜色和记录源(通过它们是表名或 SQL 语句)
【解决方案2】:

File > Options > Object Designers > Form/Report Design View > Form template.

将表单模板设置为现有表单的名称,并将用于所有新表单。

【讨论】:

    【解决方案3】:

    您可以使用 VBA 以比 DataWriter 建议的更简单的方式复制表单对象。

    您可以在即时窗口中使用以下语句:

    DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.FullName, acForm, "Form1", "Form1_Copy"
    

    其中"Form1" 是源表单的名称,"Form1_Copy" 是目标表单的名称。

    【讨论】:

    • 这是将表单本身复制到新数据库中的最佳方式。但是,如果他有兴趣在不导入表单的情况下复制表单属性,则需要自动化。
    • @DataWriter 您也可以使用它来将表单复制到同一个数据库中。它没有理由仅限于新数据库。当然,如果你想删除所有的表单控件,那是一个额外的小操作。通常,复制所有内容并删除不需要的内容比只复制需要的内容更容易。
    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多