我有一个Access ADP项目,在过去的6年里一直是一个连续的项目,所以它有数百个表单和VBA代码的沙子行。在最近的更新之后,它不会编译来创建ADE文件。它告诉我其中一个文本框不存在,但它确实存在。我删除了for,并从工作备份中重新导入了它,但仍然存在相同的错误。我已经尝试导入整个项目到一个新的ADP文件,但仍然不能编译,尝试压缩和修复以及/decompile
有没有人没有任何技巧或软件包来帮助解决这个问题?
发布于 2009-04-08 03:46:59
我不使用ADP,但在MDB中,在引用表单上的控件时,这两种语法之间存在差异:
Me.MyControl
Me!MyControl第一种方法使Access创建一个返回控件的隐藏属性。其结果是在编译时检查对控件的引用。
第二个方法使用当前窗体的默认集合,并且不提供编译时检查。
我假设VBA在ADP中的工作方式与在MDB中相同,那么为什么不尝试将有问题的控件引用转换为bang而不是dot呢?这将消除编译时检查,并可能允许项目进行编译,而不必费力地重新构建它。
如果这样做有效,我想我会尝试删除控件(移除隐藏的属性定义),并使用新名称重新添加控件,然后压缩(我不知道ADP是否可以反编译,但如果可以,也应该反编译)。从理论上讲,这应该会永久删除有问题的隐藏属性定义,如果这是问题的原因,您应该能够恢复到点运算符并返回编译时检查。
无论如何,我已经看到了太多点操作符的损坏问题,并且总是在我的所有项目中使用bang。我可以不对控件引用进行编译时检查。
而且,哦,顺便说一句,你失去了自动智能感知(在某些情况下,这是一种幸事,因为智能感知在某些上下文中可能会阻碍你的方式),但你可以用CTRL-SPACE调用不同的智能感知列表。此列表不限于控件类型,但一旦您开始键入,您就会得到通常的自动完成功能,它会将您跳到列表中的适当位置。
发布于 2009-04-07 13:21:49
有时,启动一个新的空项目,然后导入旧项目中的所有窗体/报表/模块会有所帮助。
发布于 2009-04-07 20:52:58
如果birger的方法不能解决这个问题,可以考虑使用SaveAsText方法保存每个模块。然后,按照birger的建议,导入,但只导入表单和表。然后,使用LoadFromText方法重新创建模块。
https://stackoverflow.com/questions/724947
复制相似问题