起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 255|回复: 12

【搞定】了~~2827升级到2918后已发送邮件打不开。*

[复制链接]
发表于 2008-1-10 11:22:33 | 显示全部楼层 |阅读模式
预览邮件是可以的,但双击打开时报错“error occur during invoke getRecords method, ORA-00920: 无效的关系运算符”。看起来像是数据库的问题,但在2827上是没有的,升级到2918后就有这个问题了,我特地拿了个刚初始化的2827的数据库做实验,不升级是好的,升级到2918后就这样了。
也不是每次都打不开,大约10次报错一次打开吧,方便的话,你们最好在oracle10g的环境下测试下,看看是不是有这样的情况。
.                                                                                                                                                                               .
回复

使用道具 举报

发表于 2008-1-10 18:57:05 | 显示全部楼层
感谢楼主的信息,这个应该是缺陷。楼主再发生这个错误时能否帮忙定位到代码上?报错后代码停在哪儿?根据这个我们好推测一下重现的条件。最好看一下执行的sql 是什么。应该是sql中使用了sql server的计算符号。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-11 09:28:28 | 显示全部楼层
错了两处,这是第一处。
.                                                                                                                                               .
.                                                                                                                                               .
.                                                                                                                                               .

baocuo1.jpg

134.41 KB, 下载次数: 112

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-11 09:46:20 | 显示全部楼层
这是第二处
.                                                                                                                                                                                              .
.                                                                                                                                                                                              .
.                                                                                                                                                                                              .

baocuo2.jpg

102.58 KB, 下载次数: 104

回复 支持 反对

使用道具 举报

发表于 2008-1-11 14:11:21 | 显示全部楼层
这个是2918版本的缺陷
楼主可以在出现错误函数:    ConnectionString := cConnectionStr;   下面添加下面几行代码来解决:


    if Connection.Meta.DataProvider = BizSchemaTypes.cDriver_ORACLE then
    CommandText := 'SELECT * FROM TMAILREFERENCE WHERE (BITAND(FSTATE,2) <> 2) AND FGUID = ' + SysUtils.QuotedStr(FMAILGUID)
    else
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-11 14:52:56 | 显示全部楼层
有些奇怪啊,报错的过程是function TSendedMailState.getHints: String;
应该是查询状态的吧,怎么会在双击事件中触发呢?
procedure TMAILCENTERFORM.glMailDblClick(Sender: TObject);
begin
  if FShowState then
    actStatePropertyExecute(Sender)
  else
  actOpenMailExecute(Sender);
end;
这里的代码会不会也有问题啊。
.                                                                                                                                                                                       .
回复 支持 反对

使用道具 举报

发表于 2008-1-11 14:59:05 | 显示全部楼层
用到这段代码了,楼主看一下3楼的调用栈就会明白了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-11 15:07:20 | 显示全部楼层
不好意思,我没明白,现在是这样的,我按照5楼的代码修改了过后,原来双击应该是打开邮件的,现在双击是打开状态。
.                                                                                                                                                                                           .
.                                                                                                                                                                                           .
回复 支持 反对

使用道具 举报

发表于 2008-1-11 17:52:12 | 显示全部楼层
第一次是打开状态。第二次是打开邮件。
回复 支持 反对

使用道具 举报

发表于 2008-1-11 18:40:03 | 显示全部楼层
如果楼主想要双击就打开邮件的话
业务模型\协同系统\个人事务\邮件库\邮件中的双击时间中把:
  if FShowState then
    actStatePropertyExecute(Sender)
  else
去掉好了:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-5 21:35 , Processed in 0.045809 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表