在stdAfx.h里#import "c:\program files\common files\system\ado\msado15.dll" no_namespace了,报错“msado15.tlh(1316) : error C2629: unexpected 'short ('”,然后按网上说的改为#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")了,还是报错error C2039: 'adoEOF' : is not a member of '_Record'。。

解决方案 »

  1.   

    msado15.dll 文件坏了吧,换台机器试试
      

  2.   

    _Record : _ADO
    {
        //
        // Property data
        //    __declspec(property(get=GetFields))
        FieldsPtr Fields;
        __declspec(property(get=GetState))
        enum ObjectStateEnum State;
        __declspec(property(get=GetMode,put=PutMode))
        enum ConnectModeEnum Mode;
        __declspec(property(get=GetParentURL))
        _bstr_t ParentURL;
        __declspec(property(get=GetRecordType))
        enum RecordTypeEnum RecordType;    //
        // Wrapper methods for error-handling
        //    _variant_t GetActiveConnection ( );
        void PutActiveConnection (
            _bstr_t pvar );
        void PutRefActiveConnection (
            struct _Connection * pvar );
        enum ObjectStateEnum GetState ( );
        _variant_t GetSource ( );
        void PutSource (
            _bstr_t pvar );
        void PutRefSource (
            IDispatch * pvar );
        enum ConnectModeEnum GetMode ( );
        void PutMode (
            enum ConnectModeEnum pMode );
        _bstr_t GetParentURL ( );
        _bstr_t MoveRecord (
            _bstr_t Source,
            _bstr_t Destination,
            _bstr_t UserName,
            _bstr_t Password,
            enum MoveRecordOptionsEnum Options,
            VARIANT_BOOL Async );
        _bstr_t CopyRecord (
            _bstr_t Source,
            _bstr_t Destination,
            _bstr_t UserName,
            _bstr_t Password,
            enum CopyRecordOptionsEnum Options,
            VARIANT_BOOL Async );
        HRESULT DeleteRecord (
            _bstr_t Source,
            VARIANT_BOOL Async );
        HRESULT Open (
            const _variant_t & Source,
            const _variant_t & ActiveConnection,
            enum ConnectModeEnum Mode,
            enum RecordCreateOptionsEnum CreateOptions,
            enum RecordOpenOptionsEnum Options,
            _bstr_t UserName,
            _bstr_t Password );
        HRESULT Close ( );
        FieldsPtr GetFields ( );
        enum RecordTypeEnum GetRecordType ( );
        _RecordsetPtr GetChildren ( );
        HRESULT Cancel ( );    //
        // Raw methods provided by interface
        //    virtual HRESULT __stdcall get_ActiveConnection (
            VARIANT * pvar ) = 0;
        virtual HRESULT __stdcall put_ActiveConnection (
            BSTR pvar ) = 0;
        virtual HRESULT __stdcall putref_ActiveConnection (
            struct _Connection * pvar ) = 0;
        virtual HRESULT __stdcall get_State (
            enum ObjectStateEnum * pState ) = 0;
        virtual HRESULT __stdcall get_Source (
            VARIANT * pvar ) = 0;
        virtual HRESULT __stdcall put_Source (
            BSTR pvar ) = 0;
        virtual HRESULT __stdcall putref_Source (
            IDispatch * pvar ) = 0;
        virtual HRESULT __stdcall get_Mode (
            enum ConnectModeEnum * pMode ) = 0;
        virtual HRESULT __stdcall put_Mode (
            enum ConnectModeEnum pMode ) = 0;
        virtual HRESULT __stdcall get_ParentURL (
            BSTR * pbstrParentURL ) = 0;
        virtual HRESULT __stdcall raw_MoveRecord (
            BSTR Source,
            BSTR Destination,
            BSTR UserName,
            BSTR Password,
            enum MoveRecordOptionsEnum Options,
            VARIANT_BOOL Async,
            BSTR * pbstrNewURL ) = 0;
        virtual HRESULT __stdcall raw_CopyRecord (
            BSTR Source,
            BSTR Destination,
            BSTR UserName,
            BSTR Password,
            enum CopyRecordOptionsEnum Options,
            VARIANT_BOOL Async,
            BSTR * pbstrNewURL ) = 0;
        virtual HRESULT __stdcall raw_DeleteRecord (
            BSTR Source,
            VARIANT_BOOL Async ) = 0;
        virtual HRESULT __stdcall raw_Open (
            VARIANT Source,
            VARIANT ActiveConnection,
            enum ConnectModeEnum Mode,
            enum RecordCreateOptionsEnum CreateOptions,
            enum RecordOpenOptionsEnum Options,
            BSTR UserName,
            BSTR Password ) = 0;
        virtual HRESULT __stdcall raw_Close ( ) = 0;
        virtual HRESULT __stdcall get_Fields (
            struct Fields * * ppFlds ) = 0;
        virtual HRESULT __stdcall get_RecordType (
            enum RecordTypeEnum * ptype ) = 0;
        virtual HRESULT __stdcall raw_GetChildren (
            struct _Recordset * * pprset ) = 0;
        virtual HRESULT __stdcall raw_Cancel ( ) = 0;
    };
      

  3.   

    到微软的下载站点搜索 ado 2.8 , 选择ado 2.8 sp1 安装,你的ADO版本不对或者太低
      

  4.   

    首先确认你的VC是不是装在C盘?
    另外确认在APP的Init函数中有没有加入 AfxOleInit()?
      

  5.   

    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
    的位置你放对没?要放在后面一点在#endif之前就好了,另外找找看有没有msado15.dll
      

  6.   

    6楼说的都实现了,msado15.dll在那个地方,也没看出有损坏的现象(不知道怎么看文件有没有损坏),5楼的说得抽象了点
      

  7.   

    你建的是MFC工程吧?在CAPP类的InitInstance()函数中加入
    AfxOleInit();//初始化Ole
      

  8.   

    你定义ADO变量的时候是如何定义的?
      

  9.   

    是指:
             _RecordPtr m_Recordset;
    _ConnectionPtr m_Connection;
    ?
      

  10.   

    用_RecordsetPtr m_Recordset;
    _ConnectionPtr m_Connection;试试?
      

  11.   

    _RecordsetPtr rsTt;
    HRESULT hr = 0;

    CString csConferID = _T(""); hr = rsTt.CreateInstance(__uuidof(Recordset));

    hr = rsTt->Open(_bstr_t(csSql), _variant_t((IDispatch *)pDbConn,true), adOpenDynamic, adLockOptimistic, adCmdText);
    if (SUCCEEDED(hr))
    {
    while (! rsTt->adoEOF)
    {
                                    }
                             }做个参考吧,看看有什么地方是你不一样的
      

  12.   

    我觉得不是ado方面的问题
    你把你的编译错误都列出来看看
      

  13.   

    是的,改成_RecordsetPtr m_Recordset; 就行了,能编译能运行。
    还有个小缺陷,就是有msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned,这个又是怎么说呢,听说是一定会有的。
      

  14.   

    那个warning就先不管了,非常感谢各位!