在使用“import msado15.dll”使用ado后
就会在#include“afxDAO.h”报错误
如何同时使用DAO和ado???

解决方案 »

  1.   

    为什么要同时使用两中技术呢?
    他们中有很多名字冲突的,加上命名空间吧
    如果必须要的话 建议分别包装到两个Dll中
      

  2.   

    我也不想找麻烦,但是我实在无法在本地生成一个数据库文件,又不想使用ODBC
    我使用DAO可以方便的生成文件,使用ADO可以方便的访问服务器
    楼上有好的办法么?
      

  3.   

    使用的时候加上名称空间   比如: ADO.*****
    生成一个本地数据库文件可以用 
    HANDLE CreateFile(
      LPCTSTR lpFileName,          // pointer to name of the file
      DWORD dwDesiredAccess,       // access (read-write) mode
      DWORD dwShareMode,           // share mode
      LPSECURITY_ATTRIBUTES lpSecurityAttributes,
                                   // pointer to security attributes
      DWORD dwCreationDisposition,  // how to create
      DWORD dwFlagsAndAttributes,  // file attributes
      HANDLE hTemplateFile         // handle to file with attributes to 
                                   // copy
    );
    指定文件名为 ***.mdb或其他即可
      

  4.   

    http://www.codeproject.com/database/caaadoxclass.asp
    这里的文章写的很清楚了,怎样创建一个数据库
      

  5.   

    头文件
    #import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace 
    ..._CatalogPtr m_pCatalog;
    m_pCatalog = NULL;
    m_pCatalog.CreateInstance(__uuidof(Catalog));
    CString strConnection = _T("");strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = "
                    "c:\\adox\\Test.mdb;Jet OLEDB:Engine Type=5;";
    m_pCatalog->Create(_bstr_t(strConnection ));
      

  6.   

    cdwy411(无心睡眠) 的意见本人拜读了
    但是我生成的不是mdb,而要求生成xls或dbf怎么办?
    怎么大家都认为要生成mdb
      

  7.   

    我说说我的方法:
    1、首先在已有的ADO程序中的stdafx.h 文件中加入如下代码:
       #include <afxdao.h>
      #import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("AdoNS")rename("EOF", "adoEOF")
    添加时应在所有的#include 之后,以确保ADO 的可用
      你在完成该步骤后可以试一试,DAO的功能是否可用,如果可用就说明成功了一半。
    2.这时你的ADO肯定是错误连篇的,你的ADO必须作如下的修改:
        你注意上述代码中的“AdoNS”,在所有的ADO的功能函数,功能变量前必须加入AdoNS::
     如果成功,它会自动弹出ADO的所有功能的列表
    比如原来是
       _RecordsetPtr  m_pRecordset;
      现在必须改成:
      AdoNS::_RecordsetPtr  m_pRecordset;
      “AdoNS”是你自己在stdafx.h定义的,可以胡乱写,但后面的代码必须以此为统一。
      又如自定义的函数
    Trans2Combox(CComboBox* CtrlBox,_RecordsetPtr Rec,CString field)
      必须改写为
    Trans2Combox(CComboBox* CtrlBox,AdoNS::__RecordsetPtr Rec,CString field)
    总之,要改写的地方较多,你遇到有问题的地方就改写试一试,看是否需要改写
    本人摸索了半年才得到的办法。
      供大家参考参考
      

  8.   

    不对啊~~~怎么我照你的做了以后出错的全是adBookFirst……这些东西啊?而且我AdoNS::弹不出所有功能列表?
      

  9.   

    头文件部分
    #import "c:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADOX") 
    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
     rename_namespace("ADO") rename("EOF", "EndOfFile")
    #pragma warning (disable: 4146)
    #include "icrsint.h"using namespace ADO;...在代码的实现部分  using namespace ADOX;
    _CatalogPtr m_pCatalog;
    m_pCatalog.CreateInstance(__uuidof(Catalog)); CString strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = "
    "c:\\Test.mdb;Jet OLEDB:Engine Type=5;";
    if(!PathFileExists(_T("c:\\Test.mdb")))
    m_pCatalog->Create(_bstr_t(strConnection ));
    using namespace ADO;//如果之后的代码用的是ado的话要加这一句