AE常见问题、异常处理
发生了COMException 异常来自 HRESULT:0x80040228
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”,选中 “读取设计”和“读取数据”选项