代码之家  ›  专栏  ›  技术社区  ›  a_m0d

MS Access中不工作的事件

  •  0
  • a_m0d  · 技术社区  · 15 年前

    我正在处理的数据库(在MS Access XP中)似乎已以某种方式损坏。它不再支持任何事件-单击、更改、更新事件,似乎没有任何工作。这就是我得到的错误:

    作为事件属性设置输入的更改表达式产生以下错误:对象或类不支持事件集。

    我该怎么做才能让活动重新开始?我试过了 工具->数据库实用程序->压缩和修复数据库… 但这根本没用。而且,它不是一直这样的-事件最初是工作的,但现在没有任何工作,甚至自动生成的命令按钮。

    8 回复  |  直到 9 年前
        1
  •  4
  •   Tony Toews    15 年前

    压缩和修复通常无法解决表和索引以外的对象中发生的问题。导入通常会修复这些问题,但可能会尝试反编译然后导入。 Decompile or how to reduce Microsoft Access MDB/MDE size and decrease start-up times

    我曾经遇到过同样的问题,并在这里记录了我的故障排除步骤。 The expression On Click you entered ...

    也看到 Corrupt Objects within a Corrupt Microsoft Access MDB

    总结了长时间的讨论。

    一个可能有帮助的解决方案的页面是 Errors using multiple versions of Access under Vista/Windows 7 这基本上是注册表中的权限问题。

    另一个建议是修复控制面板中的Office2003安装。然后,A2003恢复为使用库的版本11,但只有在再次使用A2007之前,问题才会再次出现。

    最初的海报说:“好吧,重新启动几次之后,删除2007运行时似乎确实解决了我的问题。”

        2
  •  3
  •   David-W-Fenton    15 年前

    托尼在他的一长串评论中提到了这一点,但这听起来就像是决斗访问注册问题。直到最近我才使用A2007(我安装了运行时来测试A2003中开发的数据库是否可以部署在它下面——它可以——但自从测试完成后就没有使用过),当我在使用A2003之后运行A2007时,它必须重新配置自己。前几天,在A2003重新配置过程中发生了一些错误(上次运行A2007之后),我得到了与您类似的错误。运行A2007(将所有内容重新注册为A2007),然后运行A2003(将所有内容重新注册为A2003),解决了问题。

    关键是,当重新注册失败时,Access不一定在下次运行时就知道它,所以您最终运行的环境部分注册为A2003,部分注册为A2007。恢复它的方法是运行另一个版本的Access。也就是说,如果A2003在没有重新配置通知的情况下启动,那么关闭它并运行A2007,以便它重新配置自己并将自己重新注册为真正的访问。然后,当您运行A2003 Next时,它会将自己重新注册为权威版的Access,并且您的A2003应用程序的所有引用都应该具有适当的形状。

    是的,这很烦人。

    而且耗时。

    我不知道为什么微软似乎认为这是一个不需要解决的问题。虽然我知道他们不会对需要并行运行A2003和A2007的开发人员大发雷霆,但有很多最终用户可能安装了A2007运行时应用程序,但也会将A2003作为其基本办公室安装的一部分进行安装。

    这件事一直在进行,所以我怀疑它是否会被修复。

        3
  •  1
  •   The Dark Knight    9 年前

    在2013年的Access中,我多次遇到同样的问题。从微软网站的一个页面上,我找到了解决我问题的答案。我在这里分享。

    1. 我把代码安全地复制到了其他访问之外的某个地方,即记事本++。
    2. 然后我删除了整个通气程序,以及它的代码,它没有被触发。
    3. 创建了新的事件过程,并将代码从记事本++还原到新创建的事件过程。
    4. 之前没有触发的事件没有发生任何故障。问题解决了。

    我不知道问题出现的原因。这个问题已经出现了很多次,每次用相同的解决方案来解决它。

    试试看。

        4
  •  0
  •   Raj More    15 年前

    尝试解压缩并重新编译数据库。

    如果这不起作用,我通常会创建一个新数据库,并将所有内容从这个数据库导入到新数据库。如果有什么东西损坏了,我会在那个时候遇到问题,并且能够修复它。

        5
  •  0
  •   Larry Lustig    15 年前

    您能在代码模块中看到代码吗?如果是这样,把它剪下来贴在安全的地方。然后将每个表单的hasmodule设置翻转为false,修复数据库,并将代码还原到新创建的代码模块。

        6
  •  0
  •   Kevin Ross    15 年前

    您可以通过向启动选项添加标志/反编译来反编译数据库,即

    msaccess.exe_156;c:\my_folder\mydb.mdb_/decompile

    我发现这解决了我的大部分问题。如果没有,则另一个方法是通过运行安全向导来重新保护数据库。这基本上会生成一个新的数据库,并为您导入所有对象。

        7
  •  0
  •   Shawne Botha    9 年前

    我也有类似的问题。当它启动时,我通过复制数据库创建了新版本的代码。这没有帮助。但是,从新数据库中删除表单并从原始数据库导入表单解决了这个问题。我没有收到任何损坏代码或其他的警告。它只是简单的工作,没有任何变化的vba等有点奇怪的所有。

        8
  •  0
  •   Carl Brady    9 年前

    我将数据库(Access2010)压缩为一个新的数据库。没有快乐。已删除不起作用的表单并将其从旧数据库导入。没有快乐。重新编译。 快乐! 不知道为什么它会退出,为什么它现在有效。我怀疑表单上链接文本框中的大量文本有问题。