首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建前端MDE

创建前端MDE
EN

Stack Overflow用户
提问于 2009-07-18 14:39:02
回答 3查看 6.6K关注 0票数 2

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

  • 我要做的第一件事是什么?它的2000版本,必须转换为03,以创建MDE,但这是完成之前,我使用数据库拆分器?
  • 数据库中的对象数量会影响这样做的能力吗?我有大约80个表单,70个查询,20+宏,12个表,当前端存在时,etc...but的数量是否阻止了其中的一些操作?
  • 当我拆分数据库时,我是否可以继续工作/在“后端”上进行更改,并且这些更改是否会直接影响前端?

这些可能是一些基本的问题,但我不知道答案so.....Thanks!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-18 15:49:03

这是我的2美分。

问题1-我从来没有使用过数据库拆分器,因为我觉得我有更多的控制手动完成它。如果手动执行此操作,则可以对没有数据库拆分器的版本执行此操作。但是如果你确实使用了拆分器,那么--是的--你必须升级到一个有拆分器的版本。

要手动完成此操作,请执行以下步骤。

  1. 备份所有东西。
  2. 创建文件的副本到同一个目录。因此,如果您有一个MyApp.MDB,则创建一个具有新名称的目录(如MyAppDATA.mdb )的副本。
  3. 打开新的数据文件(MyAppDATA.mdb)并删除除表之外的所有对象。
  4. 打开App (MyApp.mdb)并删除所有表。
  5. 同样在MyApp.mdb...go中,文件/获取外部数据/链接表菜单可以将MyAppDATA.mdb中的表链接到MyApp.mdb。选择“全部”并创建链接。

这样就行了。如果你搞砸了你做了一个backup...right?

有几个提示和gotchas...be可以确保您使用的是工具/选项,而不是显示系统和隐藏表。您只是不想从MyApp中删除系统表。另一种方法是不要删除以MSys或USys开头的表。

问题2-不管你有多少对象。事实上,你并没有那么多的对象。

问题3- Yes...you将在MyAppData.mdb中进行后端更改,当您打开MyApp.mdb时,这些更改将自动显示并针对etc进行查询(在查询设计器中,您可能需要保存/关闭/重新打开以查看新字段,如果您在查询中创建了MyApp.mdb)。例外情况是新建表,您必须使用File/Get外部数据/ links选项来创建指向新表的链接。

有一件事要记住(我希望你已经意识到了),分裂数据库的一个缺点是,当你部署前端文件时,数据的相对路径会因机器而异,而且访问中的表也不会自动重新链接。如果目标客户端具有完全访问权限,则始终可以使用工具/数据库实用程序/链接表管理器将链接刷新到正确的位置。如果无法做到这一点,则必须执行以下操作之一:

  1. 为您编写自动重新链接的代码。基本上,它将检查links...if无效,它将提示用户输入数据位置(或者在INI文件中查找它)并重新链接表。
  2. 始终将应用程序部署到所有机器上的相同位置。如果你的申请有商业前景,这是行不通的.我提到它是出于学术原因。在有限的部署中,您可以对每台机器上的文件位置进行大量控制。
  3. 将数据文件(MyAppDATA.mdb)放到网络共享上,并使用驱动器映射或UNC (\myserver\mydata\ApplicationData\MyAppData.mdb).在网络上链接表。后者为首选,但两者的风险与第二位相同。

赛斯

PS此答案假设Access 2003。

如果您有您的应用程序的商业愿景,那么表链接必须非常健壮。公私伙伴关系--我同意评论者的意见,如果是在你的技能集中,你可能想冒险做SQL。

票数 5
EN

Stack Overflow用户

发布于 2009-07-18 21:10:01

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

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

  1. 在VBE选项中,根据需要关闭编译。
  2. 将编译按钮添加到标准的VBE工具栏中,并经常使用它。
  3. 定期备份MDB并解压缩/重新编译它。

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

编辑:

解压缩的步骤:

  1. 备份你的MDB。
  2. 使用/decompile命令行参数启动Access实例。例如,我的桌面上有一个快捷方式,它的目标是: “C:\程序文件\Microsoft Office\OFFICE11\MSACCESS.EXE”/decompile
  3. 打开该Access实例后,打开要解压缩的MDB。你会看到什么都没发生。在ACCESS的例子中不要做进一步的事情--关闭这个Access实例(原因是Michael Kaplan,他对此了解一两件事,建议您永远不要在使用反编译开关打开的访问实例中执行任何工作,因为他说无法保证在这种情况下以完全安全的方式执行Access应用程序代码对所有访问工作都是完全安全的)。
  4. 打开刚刚解压缩的MDB,按住shift键(您希望确保启动例程不会运行,因为这可能会在您完成清理之前重新编译产品),并压缩MDB (再次按住shift键)。
  5. 打开代码编辑器并编译项目(调试->,编译数据库名,对于那些在我的原始编译指令中没有在编辑前的文章顶部第2步的人来说)。
  6. 压缩MDB (如果您绕过启动并不重要,因为它已经完全编译了)。

为什么要走这么多步?

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

票数 3
EN

Stack Overflow用户

发布于 2009-07-18 18:30:30

赛斯给了你一个很好的答案。但我要补充几点意见。

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

另一个资源是"将应用程序拆分为前端和后端提示

请参阅自动FE更新下载页面,使分发新FEs的过程相对轻松。该实用工具还很好地支持终端服务器/Citrix。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1147702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档