与 OLE 服务器或 ActiveX 控件通信

Posted

技术标签:

【中文标题】与 OLE 服务器或 ActiveX 控件通信【英文标题】:Communicating with the OLE Server or ActiveX Control 【发布时间】:2012-05-17 14:25:56 【问题描述】:

MS Access 2010,Win 7 在常规窗体上我没有故意放置任何 ActiveX 或 OLE 的东西.. 甚至不确定它们是什么。但无论如何,每当我在特定表单的代码中输入内容时,它都会显示 “您作为事件属性设置输入的表达式 XXXXX 产生了以下错误:MyDB 与 OLE 服务器通信时出现问题或 Active X 控件

嗯?无论我在表单的代码中输入什么,都会发生这种情况。我有一个空的 Form_Current() ONLY,它仍然跳闸。表格中有很多格式和工作,我宁愿不废弃它。如果我将代码窗口完全留空(只有选项比较数据库),它不会出错;但是那我的表格就没用了。

我已经看到这是一个语言问题,但我的其他表单(运行相同的代码技术和大部分相同的代码)都很好,而且它是带有英语 PC 的英语 Access。想法?

代码设置关闭错误:

Private Sub Form_Current()
End Sub

说真的。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我尝试了很多方法,唯一(也是最快)有效的解决方案是执行以下操作: 1)关闭导致错误的表单。 2) 重命名此表单。 3)复制它:复制,然后粘贴,系统会提示您为新表单设置名称。给它原来的名字。 4) 删除导致错误的原始表单。 5)打开粘贴的表格,它可以正常工作。 该解决方案适用于我的数据库... 问候...

【讨论】:

感谢您尝试提供解决此问题的新方法。但是,请记住,这个问题已有两年之久,并且已经有一个公认的答案。 优秀的解决方案。谢谢! 这对我有用。确实非常快 - 感谢您为我省去了很多麻烦! 使用损坏的 Access 2013 表单为我工作。 +1 非常感谢您提供此解决方案,阿布。这让我省去了很多头痛。 :)【参考方案2】:

检查缺少的参考资料。进行备份、反编译、压缩和修复,如果不起作用,请将所有内容复制到新数据库 (http://www.granite.ab.ca/access/corruptmdbs.htm) 您可能不得不跳过复制问题表格。有时值得创建一个新表单,从旧表单中选择所有控件并粘贴到新表单中。

【讨论】:

所以这可能是数据库中一些损坏的东西的问题?我确实知道在布局视图中向此表单添加选项卡会使 Access 崩溃几次,但在设计视图中它工作正常.. 表单中可能存在一些小问题(没有任何其他问题)。我会备份表格并尝试一个新的。 是的。我发现拆分数据库不太可能导致设计损坏。 分割并不是真正必要的;数据库为1-2人,每年1-2次。但这确实解决了问题;我重做了表格(还没有完全完成,但基本上)。它似乎工作。谢谢!我想指出,虽然我不需要以任何方式重做整个数据库,只需删除/重做表单。没有改变我的做法,但是……我猜 MS 又来了? 我多次遇到这个问题,因为我试图将表单的副本作为新表单 - 每次都失败。就像@Fionnuala 说的那样,制作一个新表单,复制粘贴控件,然后就发生了正确的魔法。【参考方案3】:

您可以更改语言设置试一试,步骤如下: 1、打开窗口命令,运行“intl.cpl” 2、选择管理项,更改系统区域设置。

希望对你有帮助。

【讨论】:

【参考方案4】:

我多次遇到这个问题。错误声明很可怕,因为它基本上没有提供有用的信息。我发现 Abu Hassan 的解决方案通常效果最好(复制表格并删除原始表格),但有一次对我不起作用,我不得不删除我最近添加的导入语句:

imports system.collections

一旦我删除了那个 import 语句,一切都恢复了。因此,如果复制表单不起作用,请尝试撤消您最近执行的操作。可能是这个 import 语句或类似的语句。

【讨论】:

【参考方案5】:

非常奇怪的错误,有时也会出现在我的数据库中。 它似乎主要在 UNBOUND FORMS 上出错(未绑定的表单没有 RECORDSOURCE)。 我最近做的是:

    暂时将“一些”表(例如只有一条记录的配置表)定义为 RecordSource, 编译程序(请注意,这通常可以正常运行,甚至在修复之前!) 保存表单。 打开表单。现在应该可以正常工作了! 删除RecordSource,重新编译保存。 大多数时候,我的表单在那之后又可以正常工作了。

【讨论】:

【参考方案6】:

根据我的经验,由于您在 VBA 语句中使用了本地语言,因此出现了一些错误 所以你必须将你的本地语言调整为系统的语言,从控制平庸>>语言或地区>>管理>>更改系统本地然后选择你的本地语言

或者在vba中找到单词不是英文并用英文重新输入

【讨论】:

以上是关于与 OLE 服务器或 ActiveX 控件通信的主要内容,如果未能解决你的问题,请参考以下文章

swt java 内嵌ActiveX控件

如何在 MFC 应用程序中捕获 OLE 控件事件?由创建的 ActiveX 控件触发

在电脑中Active 是啥?

『vb』如何让ole控件中途循环?

如何以编程方式确定是不是已安装 ActiveX 控件,以及它或整个 ActiveX 是不是已被禁用?

activex 如何调用OnDraw函数