我的数据库为Sybase,如果采用ODBC数据源连接,连接字符串为Provider=MSDASQL.1;Password=123456;Persist Security Info=True;User ID=sa;Data Source=s2,数据添加的程序段为:   rs1.AddNew
   ....
   rs1("a")=b
   ....
   rs1.Update则数据添加到112条时,出错。出错信息: 实时错误‘-2147467259(80004005)’:数据提供程序或其他服务返回E_FAIL状态。采用批更新模式即rs1.updatebatch也是一样。而采用OLEDB数据源则不会出现以上错误。但是采用OLEDB数据源的连接字符串,在有的机子上无法使用会显示连接错误。请各位高手帮忙。好几天都没有解决,心中无比郁闷。分数不是问题。

解决方案 »

  1.   

    Sybase没用过,会不会和连接字符串有关?如果是用ODBC数据源连接,连接字符串可以如下试试:
    cn.open"数据源名称","用户ID","数据库密码"
    因为ODBC本身安装了相应数据库的驱动,SQL和和ACCESS,还有PostgreSQL这样都是可以的
      

  2.   

    用 oledb,在打包安装后也连接不了么
      

  3.   

    试过了,还是一样的。采用ODBC的连接字符串也不行。字符串为DSN=s1;DB=smhdw;UID=sa;PWD=123456
      

  4.   

    用 oledb,在打包安装后也连接不了么==================这个我倒没有试过。不过我在机器上安装了MDAC2.8。不能连接的机器系统为2000Server
      

  5.   

    试过了,用OLEDB还是连接不上。同样的连接字符串在ASP中连接正常,VB程序就不行。数据没有问题的,因为我重装了一次系统,没有重装前,系统中安装了SQL2000和Sybase数据库,当时添加到103条就出错,重装后添加到112条出错,而且放在另外一台机子上也是同样到112出错,两台机子都是安装了MDAC2.8,不知道是不是MDAC的问题呢?
      

  6.   

    在连接字符串中添加下列属性试试:
    WorkArounds2=24
    大小写敏感要注意。产生E_FAIL错误肯定是ODBC驱动的问题,不知道你的ODBC驱动是什么,另外sybase的版本是多少。
      

  7.   

    sybase版本是12.5
    ODBC驱动3.70.00.20
      

  8.   

    问题出在text类型字段上。
    如果只单独导入一个text字段则通过。如果混合导入,当设定成adUseClient,仍然为112条出错,而设定为adUseServer,则显示出错信息为:实时错误‘-2147217887(80040e21)’:多步OLEDB操作产生错误。如果可能请检查每个OLEDB状态值,没有工作被完成。