在ActiveX EXE里面我要进行数据库操作,已经引用了ADOConnection对象mConn是作为参数从调用该ActiveX EXE的工程中传递进来的
在ActiveX EXE 执行 mConn.Execute Sql 没有问题但是我在函数里面创建Recordset对象rs,执行rs.open sql ,mConn, adOpenKeyset, adLockOptimistic   ;不管怎样,执行到这一步的时候都会报错"数据类型不匹配";我检查过不是sql语句的问题,也不是游标和锁定类型选择的问题 ,相同的语句直接放到标准Exe工程里面是可以运行的 不知道在ActiveX ExE里面是不是不能执行Recordset的操作,还是其它什么原因,各位碰到过类似的问题吗???????

解决方案 »

  1.   

    我用的和你用的是一样的啊,但没有出现任何问题啊!会不会是最简单的错误呢?就是说----不该犯的错误!你用的是OLE连接方式吧?使用ADO控件试一下,是否有同样的问题,如果没有,那就是你程序的毛病了!
      

  2.   

    sorry,我重新调试了一下
    是在set rst = new ADODB.Recordset的时候出错的
    报的是 "类型不匹配"我引用 Microsoft ActiveX Data Objects 2.5 Library和
    Microsoft ActiveX Data Objects 2.1 library都报错
      

  3.   

    Try
    dim rec as ADODB.Recordset
    Set rec = CreateObject("ADODB.Recordset")
      

  4.   

    又经过了1个小时的调试,最后改成了这样
      rst.Open sSQL, mConDB.ConnectionString, adOpenStatic, adLockReadOnly
    总算通过了,问题还是出在Open的时候,同new的过程无关
    以前的  rst.Open sSQL, mConDB, adOpenStatic, adLockReadOnly始终不能调试通过mConDB为Connection对象,是外面的工程作为参数传递进来的,rst是在ActiveExe里面创建的
    看来,感觉好想是Connection 对象不能在两个进程间传递(或共享),用传值或者传引用的方法都不行.有哪位大侠能够把这底层点的东西说清楚吗????