创建前端MDE

时间:2009-07-18 14:39:03

标签: database user-interface ms-access vba ms-office

我创建了一个用于跟踪指标的数据库,其中包含一些自动化技巧(电子邮件,.doc,.ppt演示文稿等)以及非常大的主表和许多表单/ GUI。这是我第一次担心MDE /前端的问题。所以,如果你能回答几个问题,或者提出任何建议,我将非常感激(我讨厌所有这些工作都不被利用)。

  • 我需要做的第一件事是什么?它是必须转换为03以创建MDE的2000版本,但在使用数据库拆分器之前是否已完成?

  • 数据库中的对象数量会影响执行此操作的能力吗?我有80个表单,70个查询,20多个宏,12个表等等......但是一旦前端在那里,对象的数量是否会阻止其中一些工作正常?

  • 当我拆分数据库时,我可以继续在“后端”上工作/进行更改等,并让这些更改直接影响前端吗?

这些可能是一些基本问题,但我不知道答案所以.....谢谢!

4 个答案:

答案 0 :(得分:5)

这是我的2¢。

问题1 - 我从未使用数据库分割器,因为我觉得我有更多的控制手动操作。如果您手动执行此操作,则可以将其用于没有数据库拆分器的版本。但是如果你确实使用了拆分器 - 是的 - 你必须在执行之前升级到具有拆分器的版本。

这里手动完成这些步骤。

  1. 备份所有内容。
  2. 将文件副本创建到同一目录中。因此,如果您有MyApp.MDB,则使用新名称(例如MyAppDATA.mdb)将副本创建到同一目录中。
  3. 打开新的DATA文件(MyAppDATA.mdb)并删除除TABLES之外的所有对象。
  4. 打开App文件(MyApp.mdb)并删除所有表。
  5. 同样在MyApp.mdb中...转到文件/获取外部数据/链接表菜单,将MyAppDATA.mdb中的表链接到MyApp.mdb。选择全部并创建链接。
  6. 应该这样做。如果你搞砸了你做了备份......对吧?

    一些提示和陷阱...确保您转到工具/选项,并且您没有显示系统和隐藏表。您只是不想从MyApp中删除系统表。另一种方法是不要删除以MSys或USys开头的表。

    问题2 - 无论您拥有多少物体,都无关紧要。事实上,无论如何你都没有那么多物品。

    问题3 - 是的......您将在MyAppData.mdb中进行后端更改,当您打开MyApp.mdb时,这些更改将自动神奇地在那里查看和查询等。(在查询设计器中,您可能需要保存/关闭/重新打开以查看在查询中创建mod时的新字段。除此之外的新表是您必须使用文件/获取外部数据/链接表选项来创建指向新表的链接。

    要记住的一件事(我希望你已经意识到)是分割数据库的一个缺点是当你部署前端文件时,通常数据的相对路径会因机器而异没有自动重新链接访问中的表。如果目标客户端具有完全访问权限,则可以始终使用工具/数据库实用程序/链接表管理器刷新指向正确位置的链接。如果您不能这样做,那么您将必须执行以下操作之一:
    1.编写为您自动重新链接的代码。基本上它会检查链接...如果无效,它会提示用户输入数据(或在INI文件中查找)并重新链接表格。
    2.始终将应用程序部署到所有计算机上的相同位置。如果您对您的应用程序有商业愿景,这将无法工作......我出于学术原因提及它。对于有限的部署而言,这可能是可行的,因为您可以对每台计算机上的文件放置进行大量控制 3.将数据文件(MyAppDATA.mdb)放到网络共享上,并使用驱动器映射或UNC(\ myserver \ mydata \ ApplicationData \ MyAppData.mdb)在网络上链接表。后者是首选,但它们都具有与第二个相同的风险。

    赛斯

    PS这个答案假设Access 2003 PPS如果您的应用程序具有商业愿景,那么表格链接必须非常强大。 PPPS我同意评论者的意见,如果你的技能在你的技能组合中,你可能会想要采取行动。

答案 1 :(得分:3)

有一件事尚未讨论过,那就是编译到MDE的问题是否会失败。基本上,如果您的代码在前端MDB中编译,它将转换为MDE。但我注意到很多人从未编译过。

保持VBA代码良好状态的一些提示:

  1. 在VBE选项中,关闭COMPILE ON DEMAND。

  2. 将COMPILE按钮添加到标准VBE工具栏并使用IT OFTEN。

  3. 定期备份您的MDB并反编译/重新编译它。

  4. 此外,请记住,您必须保留MDB源,因为VBA代码在MDE中不可编辑,并且无法通过任何好的方法恢复。

    编辑:

    反编译的步骤:

    1. 备份您的MDB。

    2. 使用/ decompile命令行参数启动Access实例。例如,我在桌面上有一个快捷方式,以此作为目标:

      “C:\ Program Files \ Microsoft Office \ OFFICE11 \ MSACCESS.EXE”/ decompile

    3. 打开Access实例后,打开要反编译的MDB。你会发现什么都没发生。在这个访问实例中没有进一步说明 - 关闭这个Access实例(原因是Michael Kaplan,他知道一两件事,建议你永远不要在用反编译开关打开的Access实例中做任何工作因为他说无法保证Access应用程序代码在这些情况下以对各种Access工作完全安全的方式执行。)

    4. 打开刚刚反编译的MDB按住shift键(你想确保启动例程没有运行,因为这可能会在你完成清理之前重新编译产品)并压缩MDB(再次按住shift键。

    5. 打开代码编辑器并编译项目(DEBUG - &gt; COMPILE [db name],用于那些在编辑前的帖子顶部的原始编译说明中没有第2步的人。)< / p>

    6. 压缩MDB(如果你绕过启动并不重要,因为它已经完全编译)。

    7. 为什么这么多步骤?

      因为反编译的目的是摆脱编译的p代码,以便从规范的VBA代码重新开始。按照上述步骤确保在重新编译之前已完全清除存储已编译代码的数据页。这样做的原因是,如果没有反编译后的紧凑步骤,在一些非常罕见的情况下,代码可能表现得很奇怪。我无法想象旧的丢弃的p代码正在被再次使用,但是有一些关于规范代码和编译代码之间的指针,显然不会被没有压缩的反编译完全刷新。

答案 2 :(得分:2)

这将是对塞思答案的评论,但我的代表还不够评论。

Seth很好地回答了你的问题,我只是想在第1部分中添加更多关于使用Database Splitter的信息。 “工具”菜单中的“数据库拆分器”工作正常。手动执行也没关系,但使用Database Splitter更快更容易。我已经使用了十几次,使用后从未遇到任何问题。

http://www.databasedev.co.uk/split_a_database.html有一个关于分割数据库的一些优点和缺点的不错的页面。

在多用户环境中处理拆分数据库时,

http://www.accessmvp.com/TWickerath/articles/multiuser.htm也有一些很好的信息。

答案 3 :(得分:1)

塞斯给了你一个非常好的答案。但我会添加一些评论。

当您接近大约1000个具有代码的表单,报表和模块时,对象的数量才变得相关。那里有一个限制。如果您在尝试创建MDE时确实收到了该消息,那么您几乎肯定会遇到代码错误并需要编译才能找到错误

另一个资源是“Splitting your app into a front end and back end Tips

请参阅Auto FE Updater downloads页面以使分发新FE的过程相对轻松。该实用程序还非常好地支持终端服务器/ Citrix。