方法1、
sConnect.Format("DRIVER={%s};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s")...
hr = m_pConnection->Open(_bstr_t(sConnect),"","",adModeUnknown);方法2、
sConnect.Format("Provider=...")
hr = m_pConnection->Open(_bstr_t(sConnect),"","",adModeUnknown);现象如下:
两种方法均能正常连接SQL2000数据库,且记录的读取、删除都正常,但是用第2种方法不能执行m_pRecordset->Move(...)函数,ADO总报错,第一种却正常,不知是何原因。
Move()调用过程:
m_pRecordset->Move(6, _variant_t((long)adBookFirst));期待。

解决方案 »

  1.   

    应该和Recordset对象的游标类型有关。
    用adOpenStatic或adOpenKeyset试试
      

  2.   

    对了,我的记录集初始化过程如下:
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Open(_bstr_t(lpszQuery),_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
      

  3.   

    兄弟,没办法了,再怎么试结果还是一样。错误代码0x800A0CB3
    再问了,采用方法1("DRIVER=...")和方法2("Provider=...")有区别吗?对速度或安全性有否影响?谢谢?
      

  4.   

    不好意思,上面的话有错,经过再次测试,发现用方法2能正常读取记录,但不能删除记录,当然包括Move(),帮帮我啊,谢谢了。
      

  5.   

    方法2是一种通过Microsoft Jet引擎对Access数据库的访问
    方法1是不通过DSN对SQL Server数据库的连接