dim tRs As New Adodb.recordset
dim tstrQ as string 
tstrq="Select sName From Table1"1: Dbcn.Begintrans
2: set trs=new Adodo.recordset
3: trs.Cursorlocatiom=aduserserver
4: trs.open tstrq,dbcn,adopenkeyset,adlockoptimistic
5: trs.addnew
6: trs("sName")="123456789012345678901234567890"
7: trs.update
8: Dbcn.CommitTranstable1.sName长度为20个字符环境:vb6sp6,ado2.5,oracle9i,客户端为win2000 server
ADO连接使用provider=OraOleDB.Oracle.1
执行到7或者8时 出错,内存不能为read什么的,然后vb开发环境退出,有时不报错,就会截断输入值
若游标改为 trs.Cursorlocation=AdUseClient 就可以报错:多步Ole错误
怀疑是 Oracle9i 的客户端 provider内部有错误,
为什么?没有报错???谁遇到过?如何解决,我不想使用客户端游标
不知道oracle9i有没有Pack?

解决方案 »

  1.   

    to precipitant(塞北的雪)
    谢了!
      

  2.   

    sName长度为20,但实际更新时传入的字符有30个字符。这在oracle中是不允许的,执行时要出错的。
      

  3.   

    to bobfang(匆匆过客)没说不允许出错啊,但是你要给我返回错误啊,on error不做不到错误,
    连环境都退出来了,这就不对了阿
      

  4.   

    在oracle中执行update时肯定是有错误信息的,不知道你用的工具是否有问题,ado是通过什么驱动连接oracle的?是否那个驱动有问题?
      

  5.   

    to bobfang(匆匆过客)ado连接使用oledb
    provider=OraOleDB.Oracle.1
      

  6.   

    内存不能为read什么的----
    我的机子经常出现这样的报错信息啊
    网上查了查
    基本上都说是因为两根内存主频不同(事实是这样的)
    还有内存温度过高
      

  7.   

    to bersagliere005(智珠子)你说的和我说的两码事,你那总可能是偶然现象,我这种是必然,是可以重现。是我说的原因造成的
      

  8.   

    是不是应该有
    on error语句,来捕捉错误呀。还有发生了错误后,应该回滚整个事务呀。
      

  9.   

    to precipitant有 on error ... 处理啊,事物回滚 更是有了
    而且使用客户端游标就会捕捉到错误(多步ole错误),服务器游标,就出现以上错误,连开发环境一并退出
      

  10.   

    我5年以前就改作asp了,再也没写过vb程序。帮不了你了。那就用客户端游标吧。这样也稳定些。
      

  11.   

    to precipitantasp数据库连接 ado也是不错的选择啊,你用什么连接?
      

  12.   

    也用ado,但是没遇到过你这样的问题呀
      

  13.   

    to precipitant(塞北的雪)
    你的ado 连接 provider是什么? 什么版本?
      

  14.   

    Verson:2.8
    Provider:MSDAORA.1
    OS:win2003
    DB:Oracle9i
    Oracle Client:8.1.6