VB.NET2010调用利用水晶报表2013的API,给Oracle创建session后不能释放session的问题
vb.net2010调用水晶报表的API,先使用PEOpenEngine,然后PEOpenPrintJob,然后使用PESetNthTableLocation后,会自动给...
vb.net2010调用水晶报表的API,先使用PEOpenEngine,然后PEOpenPrintJob,然后使用PESetNthTableLocation后,会自动给Oracle创建一个
session来连接数据库,调用数据库中的数据以打印报表,接着用PEStartPrintJob打印报表,然后用PEClosePrintJob来关闭报表,
然后PECloseEngine关闭水晶报表引擎,这个时候创建的session应该是被释放的,但是没有被释放掉是什么原因呢?是用法错误吗?
如果直接在:使用PEOpenEngine,之后接着就使用PECloseEngine,这时候就可以关上session,但是这样一来就不能打印报表了,大神求助.. 展开
session来连接数据库,调用数据库中的数据以打印报表,接着用PEStartPrintJob打印报表,然后用PEClosePrintJob来关闭报表,
然后PECloseEngine关闭水晶报表引擎,这个时候创建的session应该是被释放的,但是没有被释放掉是什么原因呢?是用法错误吗?
如果直接在:使用PEOpenEngine,之后接着就使用PECloseEngine,这时候就可以关上session,但是这样一来就不能打印报表了,大神求助.. 展开
1个回答
展开全部
你的数据库是出于什么模式运行,是专用模式还是共享模式呢,如果是共享模式的话可能是你的会话数达到上限,执行命令查看show parameter process;再查看select county(*) from v$process;
比较一下这两个数值是否超过进程上限,如果要查看你的数据库是否出于共享模式还是专用模式可以执行如下语句select distinct server from v$session;如果值全是ditected 则为专用模式,如果有shared则为共享模式,共享模式经常会导致楼主这样的问题,导致会话数达到上限,资源部够用的情况
不过,个人感觉的话,报表出错太频繁会影响工作效率,你要是经常出现这类状况的话还是考虑换一下finereport,后者的出错率不会有这么高
比较一下这两个数值是否超过进程上限,如果要查看你的数据库是否出于共享模式还是专用模式可以执行如下语句select distinct server from v$session;如果值全是ditected 则为专用模式,如果有shared则为共享模式,共享模式经常会导致楼主这样的问题,导致会话数达到上限,资源部够用的情况
不过,个人感觉的话,报表出错太频繁会影响工作效率,你要是经常出现这类状况的话还是考虑换一下finereport,后者的出错率不会有这么高
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询