在程序中打印时水晶报表报错:CrystalDecisions.Web.CrystalReportSource未标记为可序列化 解决思路
报错内容如下:
不多说没用的,直接上解决思路:
这是因为往水晶报表赋值的时候失败了,排查后发现是一个取数据的存储过程执行失败了,经测试,找出了出错的sql语句。出错的sql的大体形式如下:
select * FROM tablea a where exists (select 1 from
(select max(id) as id,column1,column2,column3 from tablea
where column1 in ('123456') and column2='123789' group by column1,column2)
where id=a.id and column1=a.column1 and column2=a.column2)
and column1 in ('123456') and column2='123789';
这段sql在Oracle10g的版本里是可以执行的,但是在11g里无法执行。会提示不是group by表达式。
需要修改成
select * FROM tablea a where exists (select 1 from
(select max(id) as id,column1,column2,column3 from tablea
where column1 in ('123456') and column2='123789' group by column1,column2,column3)
where id=a.id and column1=a.column1 and column2=a.column2)
and column1 in ('123456') and column2='123789';
这只是我遇到的,当然其他人遇到这种报错就也可能是别的sql出了问题,这个就需要各位自己取扒一扒程序,测试一下存储过程或者触发器之类的。
虽然现在还用这么老版本的Oracle的人已经不多了,但希望能给遇到此类问题的朋友们一个解决思路。