技术支持


培训信息

2014-7-4 本周问题总结

2014-7-4 本周问题总结

1.标准版不能分页打印;

原因:软件功能,标准版不能分页打印,只有企业版,高级企业版,旗舰版,高级旗舰版和CAD服务器可以,因为没有带esweb,因为这些版本中提前生成了用于esweb的xml文件,自定义打印就是利用这些xml文件进行的

2.ESWeb主页报错 无法将类型为 "ESCore11.ESNoticeListClass" 的 COM 对象强制转换为接口类型 "ESCore11._ESNoticeList"。此操作失败的原因是对 IID 为 "{CF6B7BBC-6886-484A-8D74-FFAD92224A5EE}" 的接口的 COM 组件调用 QueryInterface 因以下错误而失败:无法从注册表读取项(异常来自HRESULT:0x80040150(REGDB_E_READREGDB))

原因:环境:win7 64bit
此报错是由于 ASP.NET 账户对注册表项 “HKEY_CLASSES_ROOT\Wow6432Node\Interface\{00020400-0000-0000-C000-000000000046}” 无读权限导致的,在注册表中找到该项,右键菜单选择"权限", 添加 Users 账户,读权限打勾


3.网页填报,点击模板新增报错,Access to the path "C;...."is denied.还有个别模板点击新增后无任何反应,

原因:缺少权限,在安装目录下,给everyone设置写权限,或者更改安装目录。

4.excel2013在保存有VBA的模板时候报错

原因:excel2013,保存带有宏的文件时需要以xlsm格式保存,9.4.300旗舰没有这一项,升级到9.4.304,在保存模板时,把兼容Excel2003及以下版本的勾选去掉,勾选下面的Excel启用宏的工作薄(*. xlsm)

5.40409错误:查询记录出错,[用户‘sa’登录失败。(-2147203048)select count(*) from ESSystem.ES_Seslog where[sesId]=?]

原因:server.ini 中记录着sa密码的加密结果,升级的时候要读它解密然后连数据库,因为server.ini 以及其它的一起解密用的dll和exe不在同一目录下(和Excel.exe 也不在同一目录下),程序就去环境变量path 中找相应的库,加解密用的开源库,别的软件可能的也用到,那些软件用的同名的dll 安在了system32里,而它的路径排在咱们的路径之前,所以咱们的软件按path 的顺序找,先找到了它们的软件,就用了,但是解密解不开(所以就是sa登录失败,因为sa的口令没能得到)

之所以系统管理台不报错,是因为系统管理台的exe就在安装目录下,咱们软件用的所有文件也在安装目录下,windows操作系统就是这样,它会先在安装目录下找,找不到了再到系统环境变量path中写的那些目录下去找。而Excel的运行文件excel.exe是在Office的安装目录下,和咱们软件安装目录不在一起,所以它就先用了path的目录,而path 的目录,也是按从前到后的顺序找的,找到第一个就用不再往后找。
咱们的路径在path中排在最后,所以excel.exe找到的总是别人的同名文件。

处理方法:在path中将咱们程序路径排到前面

6.注册外部数据源oracle成功,但是不能返回数据表,提示错误:因为OLE_DB 访问接口‘MSDAORA’配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。

解决方法:(1).SQLServer这边安装64位的oracle 11g r2客户端并照教材做相应的配置(除修改注册表一项外)。
(2).下载并安装ACE.Oledb.12.0 for X64位的驱动AccessDatabaseEngine_X64.exe(要求office必须是64位)。
(3).EXCEL服务器中新建一个oracle的外部数据源(连32位oracle,64位肯定连接不成功)A,如果没有32位的oracle,则随便建一个服务端不在本机的外部数据源。
(4).到sql server 中,删掉链接服务器A,重新手工建链接服务器A 其中数据源根据实际情况填写。
(5).点击左侧的安全项,勾选使用此安全上下文建立连接 其中远程登录和使用密码按实际情况写。
(6).右键A。选中测试连接,如果报错,则右键A,选中编写链接服务器脚本为--CREATE到—新查询编辑器窗口—
@srvproduct=N'Oracle',
@provider=N'OraOLEDB.Oracle',
上面两项照此修改
@datasrc=N'orcl', --此处将orcl改为你实际的数据源名
@locallogin=NULL, 此处值为NULL
@rmtuser=N'system' 此处为登录oracle用户名
,@rmtpassword='########' 此处为密码
(7).本步骤为第三步外部数据源不是ORACLE时要进行的修改,SQL SERVER中, 打开你所在账套的ES_DataSource,右键选择编辑前200行,

修改其中的dbmsType 值为3,dataSrc为实际数据源名,uid为连接oracle用户名,pwd为密码,lnkServerName为所建的外部数据源名,port为1521,db根据实际 填写(即模式名,多同用户名,记住一定得大写);


7.无法将类型为 "ESCore11.ESNoticeListClass" 的 COM 对象强制转换为接口类型 "ESCore11._ESNoticeList"。此操作失败的原因对 IID 为 "{CF6B7BBC-6886-484A-8D74-FFAD92224A5EE}" 的接口的 COM 组件调用 QueryInterface 因以下错误而失败:无法从注册表读取项(异常来自HRESULT:0x80040150(REGDB_E_READREGDB))


此报错是由于 ASP.NET 账户对注册表项 “HKCR\Wow6432Node\Interface\{00020400-0000-0000-C000-000000000046}” 无读权限导致的,在注册表中找到该项,右键菜单选择"权限", 添加 Users 账户,读权限打勾保存.