AE常见问题、异常处理 发生了COMException 异常来自 HRESULT:0x80040228

时间:2024-04-17 15:42:07

1.ArcGIS version not specified. You must call RuntimeManager.Bind before creat

解决:

在系统的入口添加下面的一行代码:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

-------------------------------------------------------------------------------------------------

异常/错误信息:检索 COM 类工厂中 CLSID 为 {D20B08DF-4FF4-11D2-AB02-00C04FA334B3} 的组件失败,原因是出现以下错误: 80040111 ClassFactory 无法供应请求的类 (异常来自 HRESULT:0x80040111 (CLASS_E_CLASSNOTAVAILABLE))。

原因:没有在program,cs添加绑定

解决办法:

把Program.cs中的 ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);改成  ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);就行了。

参考:链接

-------------------------------------------------------------------------------------------------

异常/错误信息:HRESULT:0x80040228 

原因:

解决办法:链接

-------------------------------------------------------------------------------------------------

异常/错误信息:发生了COMException异常来自 HRESULT:0x80040228  异常来自 HRESULT:0x80040258

原因:窗体中忘记放LicenseControl控件。

解决方法:加上LicenseControl即可。

-------------------------------------------------------------------------------------------------

异常/错误信息:异常来自 HRESULT:0x80040213

原因:没有找到路径或者文件

结局办法:检查文件放置路径和文件名是否正确

AccessWorkFactory.OpenFromFile()中的fileName是路径+文件名。

------------------------------------------------------------------------------------------------

异常\错误信息:不能读取记录;在 \'MSysObjects\' 上没有读取数据权限

当我读取ACCESS里的系统表MSysObjects时,出现:不能读取记录;在 MSysObjects 上没有读取数据权限。的提示,语句是:select name from MSysObjects where type=1 and flags=0,而这个语句是可以直接在ACCESS查询器里使用的,不知为何,网游一翻,找到解决方法,不过还好,按这样的设置后以后这个数据库就可以 读取这个表了。

操作过程:

默认的情况是admin对MSysObjects没有任何权限!包括查询

打开您的ACCESS数据库,然后

工具 -> 选项 -> 视图 -> 隐藏对象、系统对象

前面的勾选上。

工具 -> 安全 -> 用户与组的权限

在对象名称中选定 MSysObjects ,然后权限中设置其权限。

OK,现在可以试一试了,以后这个数据库就可以直接读取MSysObjects表了

"注:在 Access 2007, 点击左上角的Office按钮,再点"Access选项"-->"当前数据库"==>"导航",这样就可以找到相应的选项了。

解决办法:

(1) access2007 解决办法

不能读取记录;在MSysObjects上没有读取数据权限 access2007 

当我读取ACCESS里的系统表MSysObjects时,出现:不能读取记录;在 MSysObjects 上没有读取数据权限。的提示,语句是:select name from MSysObjects where type=1 and flags=0,而这个语句是可以直接在ACCESS查询器里使用的,不知为何,网游一翻,找到解决方法,不过还好,按这样的设置后以后这个数据库

就可以读取这个表了。

操作过程:

默认的情况是admin对MSysObjects没有任何权限!包括查询

打开您的ACCESS数据库,然后

工具 -> 选项 -> 视图 -> 隐藏对象、系统对象

前面的勾选上。

工具 -> 安全 -> 用户与组的权限

在对象名称中选定 MSysObjects ,然后权限中设置其权限。

OK,现在可以试一试了,以后这个数据库就可以直接读取MSysObjects表了

"注:在 Access 2007, 点击左上角的Office按钮,再点"Access选项"-->"当前数据库"==>"导航",这样就可以找到相应的选项了.

(2)​access2013 解决办法

1.“文件”---->"选项"---->“当前数据库”--->“导航选项”,在“显示隐藏对象”和“显示系统对象”上选中

2.“文件”​”---->"管理用户和权限"---->“用户与组权限”,在“对象名称”中选择 “MySysObejcts”,选中 “读取设计”和“读取数据”选项

 
 
 
-----------------------------------------------------------------------------------------------------