首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vba oracle sql open失败,请高手赐教,待

2012-03-22 
vba oracle sql open失败,请高手赐教,在线等待操作描述:excel2007 中使用vba 操纵oraclesql select max

vba oracle sql open失败,请高手赐教,在线等待
操作描述:excel2007 中使用vba 操纵oracle 
sql = "select max(operatorid)+1 newoper from ac_operatorrole"
rs.Open sql, conn
newOper = rs("newoper")

环境描述1:excel 2010,oracle10g,客户端oralce10g,单数据库
  此环境执行无错误
环境描述2:excel2007 ,oracle10g,客户端oracle9i,集群数据库

错误描述:rs("newoper")报错,错误是由于没有执行 sql,也就没有了结果集

错误分析:1. 不包含max的sql可以正常执行,原因不是集群导致
  2. 怀疑是excel版本,或者oracle客户端版本导致,还未测试


请有过类似问题经验的高手不吝赐教,有自己想法的兄弟姐妹也发表下意见,相信集体的力量,谢过先

[解决办法]
你是说如果你的sql里面不包含max函数就可以在指定环境下运行通过?

这个会不会是你的版本支持有关系呢?
[解决办法]
你把客户端改成10g看看

环境描述2:excel2007 ,oracle10g,客户端oracle9i,集群数据库

因为你变了excle和oracle的版本不方便测试,你把数据库这头统一然后再说
[解决办法]
sql = "select max(operatorid)+1 newoper from ac_operatorrole"
改成
sql = "select max(operatorid)+1,newoper from ac_operatorrole"
[解决办法]

VB code
'要ac_operatorrole考虑没有记录的情况sql = "select max(operatorid) as newoper from ac_operatorrole"rs.Open sql, connif rs.recordount=0 then    newOper=1else    if not isnull(rs!newoper) then        newOper=rs!newoper + 1    else        newOper=1    end ifend if
[解决办法]
VB code
'要ac_operatorrole考虑没有记录的情况sql = "select max(operatorid) as newoper from ac_operatorrole"rs.Open sql, connif rs.recordount=0 then    newOper=1else    if not isnull(rs!newoper) then        newOper=rs!newoper + 1    else        newOper=1    end ifend if 

热点排行